From af55e5345628d31f49390e11a473079bed750fd9 Mon Sep 17 00:00:00 2001 From: Andrey Klochkov Date: Thu, 21 Mar 2013 15:02:12 -0700 Subject: [PATCH] Take subtasks into account when deciding to provision new nodes --- .../src/main/java/hudson/model/LoadStatistics.java | 5 +++++ core/src/main/java/hudson/model/Queue.java | 14 +++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/hudson/model/LoadStatistics.java b/core/src/main/java/hudson/model/LoadStatistics.java index 40185eb042..934472bd24 100644 --- a/core/src/main/java/hudson/model/LoadStatistics.java +++ b/core/src/main/java/hudson/model/LoadStatistics.java @@ -26,6 +26,8 @@ package hudson.model; import hudson.Extension; import hudson.model.MultiStageTimeSeries.TimeScale; import hudson.model.MultiStageTimeSeries.TrendChart; +import hudson.model.queue.SubTask; +import hudson.model.queue.Tasks; import hudson.util.ColorPalette; import hudson.util.NoOverlapCategoryAxis; import jenkins.model.Jenkins; @@ -232,6 +234,9 @@ public abstract class LoadStatistics { for (Queue.BuildableItem bi : bis) { if(bi.task.getAssignedLabel()==l) q++; + for (SubTask st : Tasks.getSubTasksOf(bi.task)) + if (st != bi.task && st.getAssignedLabel()==l) + q++; } return q; } diff --git a/core/src/main/java/hudson/model/Queue.java b/core/src/main/java/hudson/model/Queue.java index f1a852d6dc..78244636ae 100644 --- a/core/src/main/java/hudson/model/Queue.java +++ b/core/src/main/java/hudson/model/Queue.java @@ -756,11 +756,19 @@ public class Queue extends ResourceController implements Saveable { public synchronized int countBuildableItemsFor(Label l) { int r = 0; for (BuildableItem bi : buildables.values()) - if(bi.getAssignedLabel()==l) + if(null==l || bi.getAssignedLabel()==l) { r++; + for (SubTask st : bi.task.getSubTasks()) + if (st != bi.task && (null==l || st.getAssignedLabel()==l)) + r++; + } for (BuildableItem bi : pendings.values()) - if(bi.getAssignedLabel()==l) + if(bi.getAssignedLabel()==l) { r++; + for (SubTask st : bi.task.getSubTasks()) + if (st != bi.task && (null==l || st.getAssignedLabel()==l)) + r++; + } return r; } @@ -768,7 +776,7 @@ public class Queue extends ResourceController implements Saveable { * Counts all the {@link BuildableItem}s currently in the queue. */ public synchronized int countBuildableItems() { - return buildables.size()+pendings.size(); + return countBuildableItemsFor(null); } /** -- GitLab