@Extension
public class BuildBlockerQueueTaskDispatcher
extends hudson.model.queue.QueueTaskDispatcher
| Constructor and Description |
|---|
BuildBlockerQueueTaskDispatcher() |
| Modifier and Type | Method and Description |
|---|---|
hudson.model.queue.CauseOfBlockage |
canRun(hudson.model.Queue.Item item)
Called whenever
Queue is considering if Queue.Item is ready to execute immediately
(which doesn't necessarily mean that it gets executed right away — it's still subject to
executor availability), or if it should be considered blocked. |
public hudson.model.queue.CauseOfBlockage canRun(hudson.model.Queue.Item item)
Queue is considering if Queue.Item is ready to execute immediately
(which doesn't necessarily mean that it gets executed right away — it's still subject to
executor availability), or if it should be considered blocked.
Compared to QueueTaskDispatcher.canTake(hudson.model.Node, hudson.model.Queue.BuildableItem), this version tells Jenkins that the task is
simply not ready to execute, even if there's available executor. This is more efficient
than QueueTaskDispatcher.canTake(hudson.model.Node, hudson.model.Queue.BuildableItem), and it sends the right signal to Jenkins so that
it won't use Cloud to try to provision new executors.
Vetos are additive. When multiple QueueTaskDispatchers are in the system,
the task is considered blocked if any one of them returns a non-null value.
(This relationship is also the same with built-in check logic.)
If a QueueTaskDispatcher returns non-null from this method, the task is placed into
the 'blocked' state, and generally speaking it stays in this state for a few seconds before
its state gets re-evaluated. If a QueueTaskDispatcher wants the blockage condition
to be re-evaluated earlier, call Queue.scheduleMaintenance() to initiate that process.canRun in class hudson.model.queue.QueueTaskDispatcherQueueTaskDispatcher is concerned. Otherwise return an object that indicates why
the build is blocked.Copyright © 2004-2013. All Rights Reserved.