diff --git a/core/src/main/java/hudson/model/Computer.java b/core/src/main/java/hudson/model/Computer.java index 9cbf92451ac44eed97b45ceebad3b60f521dd6c0..b0c1b39ce8d8032ac9513fc4d01aad328798e3a7 100644 --- a/core/src/main/java/hudson/model/Computer.java +++ b/core/src/main/java/hudson/model/Computer.java @@ -729,9 +729,16 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces availableNumbers.remove(executor.getNumber()); for (Integer number : availableNumbers) { - Executor e = new Executor(this, number); - executors.add(e); + /* There may be busy executors with higher index, so only + fill up until numExecutors is reached. + Extra executors will call removeExecutor(...) and that + will create any necessary executors from #0 again. */ + if (executors.size() < numExecutors) { + Executor e = new Executor(this, number); + executors.add(e); + } } + } /**