public class BuildQueueManagerImpl extends Object implements BuildQueueManager
BuildQueueManager.QueuedResultKey, BuildQueueManager.QueueItemView<T>AgentQueueAccessor.QueueAccessResultDISABLE_BUILD_SYSTEM_PROPERTY| Constructor and Description |
|---|
BuildQueueManagerImpl(AgentManager agentManager,
com.atlassian.event.api.EventPublisher eventPublisher,
BuildExecutionManager buildExecutionManager,
com.atlassian.plugin.PluginAccessor pluginAccessor,
ErrorUpdateHandler errorUpdateHandler,
ExecutableAgentsHelper executableAgentsHelper,
CustomVariableContextRunner customVariableContextRunner,
ExecutionPhaseService executionPhaseService,
XStreamFactory xStreamFactory,
org.springframework.transaction.support.TransactionTemplate transactionTemplate,
LocalResultProcessor resultProcessor) |
| Modifier and Type | Method and Description |
|---|---|
void |
addToQueue(CommonContext context)
Attempts to add the build to a queue.
|
Set<Long> |
getExecutorsForQueuedExecutable(ResultKey resultKey) |
Collection<ElasticImageConfiguration> |
getImagesForQueuedExecutable(ResultKey resultKey) |
Iterable<BuildQueueManager.QueuedResultKey> |
getQueuedExecutables() |
BuildQueuePosition |
getQueuePosition(ResultKey resultKey)
Returns information on position of plan result in the queue.
|
void |
invalidateExecutables(BuildAgent buildAgent)
Updates all agent-executable mappings for a given agent.
|
void |
invalidateExecutors(Key key) |
void |
invalidateExecutors(String reason) |
BuildQueueManager.QueueItemView<CommonContext> |
peekContext(ResultKey resultKey)
Returns a queued CommonContext for given resultKey.
|
void |
removeBuildFromQueue(ResultKey resultKey)
Removes the
CommonContext associated with the resultKey to be removed from the queue. |
boolean |
reorderInQueue(ResultKey resultKey,
int index)
Reorders the build queue.
|
void |
restoreState(Set<ResultKey> resultsToRestore)
Restore state after server restart.
|
CommonContext |
takeBuildContext(long agentId)
Takes a
CommonContext from the queue, blocking until one is available. |
AgentQueueAccessor.QueueAccessResult |
takeContext(long agentId)
Takes a
CommonContext from the queue, blocking until one is available. |
@Inject
public BuildQueueManagerImpl(@NotNull
AgentManager agentManager,
@NotNull
com.atlassian.event.api.EventPublisher eventPublisher,
@NotNull
BuildExecutionManager buildExecutionManager,
@NotNull
com.atlassian.plugin.PluginAccessor pluginAccessor,
@NotNull
ErrorUpdateHandler errorUpdateHandler,
@NotNull
ExecutableAgentsHelper executableAgentsHelper,
@NotNull
CustomVariableContextRunner customVariableContextRunner,
@NotNull
ExecutionPhaseService executionPhaseService,
@NotNull
XStreamFactory xStreamFactory,
@NotNull
org.springframework.transaction.support.TransactionTemplate transactionTemplate,
@NotNull
LocalResultProcessor resultProcessor)
public void addToQueue(@NotNull
CommonContext context)
BuildQueueManager
A lock on the build is obtained from the BuildExecutionManager.
addToQueue in interface BuildQueueManagerpublic void removeBuildFromQueue(@NotNull
ResultKey resultKey)
BuildQueueManagerCommonContext associated with the resultKey to be removed from the queue.
The lock on the build is not released. The caller should call com.atlassian.bamboo.build.BuildExecutionManager#finishBuild(PlanResultKey) to
release this lock when ready.
removeBuildFromQueue in interface BuildQueueManagerpublic boolean reorderInQueue(ResultKey resultKey, int index)
BuildQueueManagerCommonContext associated with the resultKey is moved to new position in the queue
indicated by the zero-based index parameter. If index is < 0 or >= size of queue then CommonContext is
positioned at the beginning or at the end of the queue respectively.reorderInQueue in interface BuildQueueManagerresultKey - Result key of the build that shall be repositioned in the queue.index - New position of a CommonContext associated with the planKey in the queue.@NotNull public BuildQueuePosition getQueuePosition(@NotNull ResultKey resultKey)
BuildQueueManagergetQueuePosition in interface BuildQueueManagerresultKey - identifies plan resultpublic void invalidateExecutors(@NotNull
String reason)
invalidateExecutors in interface BuildQueueManagerpublic void invalidateExecutors(@NotNull
Key key)
invalidateExecutors in interface BuildQueueManagerpublic void invalidateExecutables(@NotNull
BuildAgent buildAgent)
BuildQueueManagerinvalidateExecutables in interface BuildQueueManager@NotNull public Iterable<BuildQueueManager.QueuedResultKey> getQueuedExecutables()
getQueuedExecutables in interface BuildQueueManager@Nullable public Collection<ElasticImageConfiguration> getImagesForQueuedExecutable(@NotNull ResultKey resultKey)
getImagesForQueuedExecutable in interface BuildQueueManager@Nullable public Set<Long> getExecutorsForQueuedExecutable(@NotNull ResultKey resultKey)
getExecutorsForQueuedExecutable in interface BuildQueueManager@Nullable public BuildQueueManager.QueueItemView<CommonContext> peekContext(@NotNull ResultKey resultKey)
BuildQueueManagerpeekContext in interface BuildQueueManagerpublic void restoreState(Set<ResultKey> resultsToRestore)
BuildQueueManagerrestoreState in interface BuildQueueManagerresultsToRestore - keys of results that it makes sense to restore@Nullable public CommonContext takeBuildContext(long agentId) throws InterruptedException
AgentQueueAccessorCommonContext from the queue, blocking until one is available.
The lock on the build is not released. The caller should call com.atlassian.bamboo.build.BuildExecutionManager#finishBuild(PlanResultKey) to
release this lock when ready.
takeBuildContext in interface AgentQueueAccessoragentId - the id of the agent that is taking the build context.CommonContext, null in case of timeout on retrieval.InterruptedException - if the calling Thread is interrupted.@Nullable public AgentQueueAccessor.QueueAccessResult takeContext(long agentId) throws InterruptedException
AgentQueueAccessorCommonContext from the queue, blocking until one is available.
The lock on the build is not released. The caller should call com.atlassian.bamboo.build.BuildExecutionManager#finishBuild(PlanResultKey) to
release this lock when ready.
takeContext in interface AgentQueueAccessoragentId - the id of the agent that is taking the build context.AgentQueueAccessor.QueueAccessResult containing: CommonContext on success, error message on error, nulls in case of timeout on retrieval.InterruptedException - if the calling Thread is interrupted.Copyright © 2021 Atlassian Software Systems Pty Ltd. All rights reserved.