|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objecthudson.model.ResourceController
hudson.model.Queue
@ExportedBean public class Queue
Build queue.
This class implements the core scheduling logic. Queue.TransientTask
represents the executable
task that are placed in the queue. While in the queue, it's wrapped into Item
so that we can keep track of additional data used for deciding what to exeucte when.
Items in queue goes through several stages, as depicted below:
(enter) --> waitingList --+--> blockedProjects | ^ | | | v +--> buildables ---> pending ---> (executed)
In addition, at any stage, an item can be removed from the queue (for example, when the user cancels a job in the queue.) See the corresponding field for their exact meanings.
Nested Class Summary | |
---|---|
class |
Queue.BlockedItem
Item in the blockedProjects stage. |
static class |
Queue.BuildableItem
Item in the buildables stage. |
static interface |
Queue.Executable
Represents the real meat of the computation run by Executor . |
static interface |
Queue.FlyweightTask
Marks Queue.TransientTask s that do not consume Executor . |
static class |
Queue.Item
Item in a queue. |
class |
Queue.JobOffer
Data structure created for each idle Executor . |
static interface |
Queue.NonBlockingTask
Marks Queue.TransientTask s that are not affected by the Jenkins.isQuietingDown() quieting down},
because these tasks keep other tasks executing. |
static class |
Queue.NotWaitingItem
Common part between Queue.BlockedItem and BuildableItem . |
static interface |
Queue.QueueAction
An optional interface for actions on Queue.Item. |
static class |
Queue.QueueDecisionHandler
Extension point for deciding if particular job should be scheduled or not. |
static interface |
Queue.Task
Task whose execution is controlled by the queue. |
static interface |
Queue.TransientTask
Marks Queue.TransientTask s that are not persisted. |
static class |
Queue.WaitingItem
Item in the waitingList stage. |
Field Summary | |
---|---|
static com.thoughtworks.xstream.XStream |
XSTREAM
This XStream instance is used to persist Queue.TransientTask s. |
Fields inherited from interface hudson.model.Saveable |
---|
NOOP |
Constructor Summary | |
---|---|
Queue(LoadBalancer loadBalancer)
|
Method Summary | |
---|---|
boolean |
add(AbstractProject p)
Deprecated. as of 1.311 Use schedule(AbstractProject) |
boolean |
add(AbstractProject p,
int quietPeriod)
Deprecated. as of 1.311 Use schedule(Task, int) |
boolean |
add(Queue.Task p,
int quietPeriod)
Deprecated. as of 1.311 Use schedule(Task, int) |
boolean |
add(Queue.Task p,
int quietPeriod,
Action... actions)
Deprecated. as of 1.311 Use schedule(Task, int, Action...) |
boolean |
cancel(Queue.Item item)
|
boolean |
cancel(Queue.Task p)
Cancels the item in the queue. |
void |
clear()
Wipes out all the items currently in the queue, as if all of them are cancelled at once. |
boolean |
contains(Queue.Task t)
Returns true if this queue contains the said project. |
int |
countBuildableItems()
Counts all the BuildableItem s currently in the queue. |
int |
countBuildableItemsFor(Label l)
How many BuildableItem s are assigned for the given label? |
org.kohsuke.stapler.HttpResponse |
doCancelItem(int id)
Called from queue.jelly and entries.jelly . |
Api |
getApi()
|
List<Queue.Item> |
getApproximateItemsQuickly()
Like getItems() , but returns an approximation that might not be completely up-to-date. |
List<Queue.BuildableItem> |
getBuildableItems()
Gets the snapshot of all BuildableItem s. |
List<Queue.BuildableItem> |
getBuildableItems(Computer c)
Gets all the BuildableItem s that are waiting for an executor in the given Computer . |
static Queue |
getInstance()
|
Queue.Item |
getItem(int id)
|
Queue.Item |
getItem(Queue.Task t)
Gets the information about the queue item for the given project. |
Queue.Item[] |
getItems()
Gets a snapshot of items in the queue. |
List<Queue.Item> |
getItems(Queue.Task t)
Gets the information about the queue item for the given project. |
LoadBalancer |
getLoadBalancer()
|
List<Queue.BuildableItem> |
getPendingItems()
Gets the snapshot of all BuildableItem s. |
QueueSorter |
getSorter()
|
List<Queue.Item> |
getUnblockedItems()
Gets all items that are in the queue but not blocked |
Set<Queue.Task> |
getUnblockedTasks()
Works just like getUnblockedItems() but return tasks. |
static boolean |
ifBlockedByHudsonShutdown(Queue.Task task)
|
static void |
init(Jenkins h)
Restores the queue content during the start up. |
boolean |
isEmpty()
|
boolean |
isPending(Queue.Task t)
Is the given task currently pending execution? |
void |
load()
Loads the queue contents that was saved . |
void |
maintain()
Queue maintenance. |
WorkUnit |
pop()
Called by the executor to fetch something to build next. |
void |
save()
Persists the queue contents to the disk. |
Queue.WaitingItem |
schedule(AbstractProject p)
Schedule a new build for this project. |
Queue.WaitingItem |
schedule(Queue.Task p,
int quietPeriod)
|
Queue.WaitingItem |
schedule(Queue.Task p,
int quietPeriod,
Action... actions)
Convenience wrapper method around schedule(Task, int, List) |
Queue.WaitingItem |
schedule(Queue.Task p,
int quietPeriod,
List<Action> actions)
Schedules an execution of a task. |
void |
scheduleMaintenance()
Checks the queue and runs anything that can be run. |
void |
setLoadBalancer(LoadBalancer loadBalancer)
|
void |
setSorter(QueueSorter sorter)
|
Methods inherited from class hudson.model.ResourceController |
---|
canRun, execute, getBlockingActivity, getMissingResource |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final com.thoughtworks.xstream.XStream XSTREAM
XStream
instance is used to persist Queue.TransientTask
s.
Constructor Detail |
---|
public Queue(LoadBalancer loadBalancer)
Method Detail |
---|
public LoadBalancer getLoadBalancer()
public void setLoadBalancer(LoadBalancer loadBalancer)
public QueueSorter getSorter()
public void setSorter(QueueSorter sorter)
public void load()
saved
.
public void save()
save
in interface Saveable
@CLIMethod(name="clear-queue") public void clear()
public boolean add(AbstractProject p)
schedule(AbstractProject)
public Queue.WaitingItem schedule(AbstractProject p)
public boolean add(AbstractProject p, int quietPeriod)
schedule(Task, int)
Left for backward compatibility with <1.114.
public Queue.WaitingItem schedule(Queue.Task p, int quietPeriod, List<Action> actions)
actions
- These actions can be used for associating information scoped to a particular build, to
the task being queued. Upon the start of the build, these Action
s will be automatically
added to the Run
object, and hence avaialable to everyone.
For the convenience of the caller, this list can contain null, and those will be silently ignored.
Queue.WaitingItem
object added, although the nature of the queue
is that such Item
only captures the state of the item at a particular moment,
and by the time you inspect the object, some of its information can be already stale.
That said, one can still look at Queue.Item.future
, Queue.Item.id
, etc.public boolean add(Queue.Task p, int quietPeriod)
schedule(Task, int)
public Queue.WaitingItem schedule(Queue.Task p, int quietPeriod)
public boolean add(Queue.Task p, int quietPeriod, Action... actions)
schedule(Task, int, Action...)
public Queue.WaitingItem schedule(Queue.Task p, int quietPeriod, Action... actions)
schedule(Task, int, List)
public boolean cancel(Queue.Task p)
public boolean cancel(Queue.Item item)
public org.kohsuke.stapler.HttpResponse doCancelItem(@QueryParameter int id) throws IOException, javax.servlet.ServletException
queue.jelly
and entries.jelly
.
IOException
javax.servlet.ServletException
public boolean isEmpty()
@Exported(inline=true) public Queue.Item[] getItems()
public List<Queue.Item> getApproximateItemsQuickly()
getItems()
, but returns an approximation that might not be completely up-to-date.
At the expense of accuracy, this method does not usually lock Queue
and therefore is faster
in a highly concurrent situation.
The list obtained is an accurate snapshot of the queue at some point in the past. The snapshot
is updated and normally no more than one second old, but this is a soft commitment that might
get violated when the lock on Queue
is highly contended.
This method is primarily added to make UI threads run faster.
public Queue.Item getItem(int id)
public List<Queue.BuildableItem> getBuildableItems(Computer c)
BuildableItem
s that are waiting for an executor in the given Computer
.
public List<Queue.BuildableItem> getBuildableItems()
BuildableItem
s.
public List<Queue.BuildableItem> getPendingItems()
BuildableItem
s.
public List<Queue.Item> getUnblockedItems()
public Set<Queue.Task> getUnblockedTasks()
getUnblockedItems()
but return tasks.
public boolean isPending(Queue.Task t)
public int countBuildableItemsFor(Label l)
BuildableItem
s are assigned for the given label?
public int countBuildableItems()
BuildableItem
s currently in the queue.
public Queue.Item getItem(Queue.Task t)
public List<Queue.Item> getItems(Queue.Task t)
public boolean contains(Queue.Task t)
public WorkUnit pop() throws InterruptedException
This method blocks until a next project becomes buildable.
InterruptedException
public void scheduleMaintenance()
When conditions are changed, this method should be invoked.
This wakes up one Executor
so that it will maintain a queue.
public void maintain()
Move projects between waitingList
, blockedProjects
, buildables
, and pendings
appropriately.
Jenkins internally invokes this method by itself whenever there's a change that can affect
the scheduling (such as new node becoming online, # of executors change, a task completes execution, etc.),
and it also gets invoked periodically (see MaintainTask
.)
public static boolean ifBlockedByHudsonShutdown(Queue.Task task)
public Api getApi()
@CLIResolver public static Queue getInstance()
@Initializer(after=JOB_LOADED) public static void init(Jenkins h)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |