From 55bf883290273ac8caacf272e684151676666f42 Mon Sep 17 00:00:00 2001 From: Stephen Connolly Date: Tue, 18 Jun 2013 13:14:34 +0100 Subject: [PATCH] If every node is restricted to tied jobs only, Matrix build jobs can never start. --- changelog.html | 2 ++ core/src/main/java/hudson/model/Node.java | 12 ++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/changelog.html b/changelog.html index 9d4ae1a1ad..44393dc9b9 100644 --- a/changelog.html +++ b/changelog.html @@ -75,6 +75,8 @@ Upcoming changes
  • Deadlock during Maven builds Parsing POM step (issue 15846) +
  • + If every node is restricted to tied jobs only, Matrix build jobs can never start.

    What's new in 1.521 (2013/07/02)

    diff --git a/core/src/main/java/hudson/model/Node.java b/core/src/main/java/hudson/model/Node.java index 9da535694a..a89fef0506 100644 --- a/core/src/main/java/hudson/model/Node.java +++ b/core/src/main/java/hudson/model/Node.java @@ -325,8 +325,16 @@ public abstract class Node extends AbstractModelObject implements Reconfigurable if(l!=null && !l.contains(this)) return CauseOfBlockage.fromMessage(Messages._Node_LabelMissing(getNodeName(),l)); // the task needs to be executed on label that this node doesn't have. - if(l==null && getMode()== Mode.EXCLUSIVE) - return CauseOfBlockage.fromMessage(Messages._Node_BecauseNodeIsReserved(getNodeName())); // this node is reserved for tasks that are tied to it + if(l==null && getMode()== Mode.EXCLUSIVE) { + // flyweight tasks need to get executed somewhere, if every node + if (!(item.task instanceof Queue.FlyweightTask && ( + this instanceof Jenkins + || Jenkins.getInstance().getNumExecutors() < 1 + || Jenkins.getInstance().getMode() == Mode.EXCLUSIVE) + )) { + return CauseOfBlockage.fromMessage(Messages._Node_BecauseNodeIsReserved(getNodeName())); // this node is reserved for tasks that are tied to it + } + } Authentication identity = item.authenticate(); if (!getACL().hasPermission(identity,Computer.BUILD)) { -- GitLab