diff --git a/changelog.html b/changelog.html
index 35361a30dcbbc5caf327c7fab192de59ad94880d..600554d6c71acca7caebc4fce1f2eb14e271514c 100644
--- a/changelog.html
+++ b/changelog.html
@@ -55,6 +55,10 @@ Upcoming changes
+ -
+ When measuring the length of the queue, jobs that consist of multiple subtasks should
+ count as more than 1.
+ (pull request 742)
-
Close drop-down button menu when clicking outside
(issue 17050)
diff --git a/core/src/main/java/hudson/model/LoadStatistics.java b/core/src/main/java/hudson/model/LoadStatistics.java
index edf8cf4593a3368d8feff07c20e4bd3be8d2510b..81ebae78def0020dfcf2c01a1c34578d90d75c07 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;
@@ -230,8 +232,9 @@ public abstract class LoadStatistics {
private int count(List bis, Label l) {
int q=0;
for (Queue.BuildableItem bi : bis) {
- if(bi.task.getAssignedLabel()==l)
- q++;
+ for (SubTask st : Tasks.getSubTasksOf(bi.task))
+ if (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 17b18f7a792c333687048efd3592e582076bfd1c..1dc8e7bd7bd5b704c701c424023d6f8216fd9e73 100644
--- a/core/src/main/java/hudson/model/Queue.java
+++ b/core/src/main/java/hudson/model/Queue.java
@@ -819,11 +819,13 @@ 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)
- r++;
+ for (SubTask st : bi.task.getSubTasks())
+ if (null==l || st.getAssignedLabel()==l)
+ r++;
for (BuildableItem bi : pendings.values())
- if(bi.getAssignedLabel()==l)
- r++;
+ for (SubTask st : bi.task.getSubTasks())
+ if (null==l || st.getAssignedLabel()==l)
+ r++;
return r;
}
@@ -831,7 +833,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);
}
/**