diff --git a/core/src/main/java/hudson/model/Queue.java b/core/src/main/java/hudson/model/Queue.java index 2d69ed9d11cc4da62b3077dc111a660716058e5c..625bb9d04a37a46f2634562a09af62050df78178 100644 --- a/core/src/main/java/hudson/model/Queue.java +++ b/core/src/main/java/hudson/model/Queue.java @@ -1500,8 +1500,9 @@ public class Queue extends ResourceController implements Saveable { m.execute(wuc); p.leave(this); - if (!wuc.getWorkUnits().isEmpty()) + if (!wuc.getWorkUnits().isEmpty()) { makePending(p); + } else LOGGER.log(Level.FINE, "BuildableItem {0} with empty work units!?", p); @@ -1557,6 +1558,7 @@ public class Queue extends ResourceController implements Saveable { * @param p - the flyweight task to be scheduled * @return a Runnable if there is an executor that can take the task, null otherwise */ + @CheckForNull private Runnable makeFlyWeightTaskBuildable(final BuildableItem p){ //we double check if this is a flyweight task if (p.task instanceof FlyweightTask) { @@ -1575,10 +1577,10 @@ public class Queue extends ResourceController implements Saveable { for (Node n : hash.list(p.task.getFullDisplayName())) { final Computer c = n.toComputer(); - if (n.canTake(p) != null) { + if (c == null || c.isOffline()) { continue; } - if (c == null || c.isOffline()) { + if (n.canTake(p) != null) { continue; } return new Runnable() { diff --git a/test/src/test/java/hudson/model/QueueTest.java b/test/src/test/java/hudson/model/QueueTest.java index fd625895e5aef6715d8035b04aa26c34ede4e3d7..30911f1bad85718c96ae6b4daf286f28471bc9e6 100644 --- a/test/src/test/java/hudson/model/QueueTest.java +++ b/test/src/test/java/hudson/model/QueueTest.java @@ -800,6 +800,7 @@ public class QueueTest { r.jenkins.clouds.add(dummyCloud); project.setAssignedLabel(label); r.assertBuildStatusSuccess(project.scheduleBuild2(0)); + assertEquals("aws-linux-dummy", project.getBuilds().getLastBuild().getBuiltOn().getLabelString()); } }