Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #20 from ssogabe/JENKINS-18861
[JENKINS-18861] Awful performance from Latest Builds portlet
  • Loading branch information
mambu committed Aug 6, 2013
2 parents 0f67631 + 4e32001 commit 0b02809
Showing 1 changed file with 24 additions and 15 deletions.
Expand Up @@ -8,13 +8,13 @@
import java.text.DateFormat;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;

import org.kohsuke.stapler.DataBoundConstructor;

import hudson.plugins.view.dashboard.Messages;
import java.util.PriorityQueue;

public class LatestBuilds extends DashboardPortlet {

Expand Down Expand Up @@ -46,21 +46,30 @@ public String getTimestampString(Run run) {
*
*/
public List<Run> getFinishedBuilds() {
List<Job> jobs = getDashboard().getJobs();
List<Run> allBuilds = new ArrayList<Run>();
for (Job job : jobs) {
List<Run> builds = job.getBuilds();
allBuilds.addAll(builds);
}
Collections.sort(allBuilds, Run.ORDER_BY_DATE);
List<Run> recentBuilds = new ArrayList<Run>();
if (allBuilds.size() < getNumBuilds()) {
recentBuilds = allBuilds;
} else {
recentBuilds = allBuilds.subList(0, getNumBuilds());
}
List<Job> jobs = getDashboard().getJobs();

PriorityQueue<Run> queue = new PriorityQueue<Run>(numBuilds, Run.ORDER_BY_DATE);
for (Job job : jobs) {
Run lb = job.getLastBuild();
if (lb != null) {
queue.add(lb);
}
}

List<Run> recentBuilds = new ArrayList<Run>(numBuilds);
for (int i = 0; i < numBuilds; i++) {
Run run = queue.poll();
if (run == null) {
break;
}
recentBuilds.add(run);
Run pb = run.getPreviousBuild();
if (pb != null) {
queue.add(pb);
}
}

return recentBuilds;
return recentBuilds;
}

public String getBuildColumnSortData(Run<?, ?> build) {
Expand Down

0 comments on commit 0b02809

Please sign in to comment.