public class NonBlockingPlanExecutionServiceImpl extends Object implements NonBlockingPlanExecutionService
Constructor and Description |
---|
NonBlockingPlanExecutionServiceImpl(PlanExecutionManager planExecutionManager) |
Modifier and Type | Method and Description |
---|---|
void |
enqueueTrigger(Triggerable triggerable,
Long triggerId,
BuildDetectionAction buildDetectionAction)
|
ExecutorStats |
getExecutorStats()
Stats for the underlying
ThreadPoolExecutor |
Future<Boolean> |
shutdown()
Stop accepting any more trigger requests.
|
Future<ExecutionRequestResult> |
tryToStart(Triggerable triggerable,
BuildDetectionAction buildDetectionAction)
|
public NonBlockingPlanExecutionServiceImpl(PlanExecutionManager planExecutionManager)
public void enqueueTrigger(@NotNull Triggerable triggerable, @NotNull Long triggerId, @NotNull BuildDetectionAction buildDetectionAction)
NonBlockingPlanExecutionService
PlanExecutionManager.start(com.atlassian.bamboo.plan.cache.ImmutableChain, com.atlassian.bamboo.build.BuildDetectionAction, com.atlassian.bamboo.util.AcquisitionPolicy)
. Only one AcquisitionPolicy.IMMEDIATE
per planKey + triggerId combination will be queued at any point in time. The task are not guaranteed to be run, they might
get dropped if NonBlockingPlanExecutionService.tryToStart(Triggerable, BuildDetectionAction)
is called.
Rationale is: conditional triggers won't start anyway if there's a 'guaranteed' build run.
To be used with automatic triggers: any auto Trigger can have Trigger Conditions definedenqueueTrigger
in interface NonBlockingPlanExecutionService
@Nullable public Future<ExecutionRequestResult> tryToStart(@NotNull Triggerable triggerable, @NotNull BuildDetectionAction buildDetectionAction)
NonBlockingPlanExecutionService
PlanExecutionManager.start(com.atlassian.bamboo.plan.cache.ImmutableChain, com.atlassian.bamboo.build.BuildDetectionAction, com.atlassian.bamboo.util.AcquisitionPolicy)
. The task uses AcquisitionPolicy.WAIT
.
To be used for triggers that are 'unconditional'. In other words, the method should be used for cases where build absolutely, positively needs
to trigger (unless encountering internal error or hitting concurrent build limit)tryToStart
in interface NonBlockingPlanExecutionService
public Future<Boolean> shutdown()
NonBlockingPlanExecutionService
shutdown
in interface NonBlockingPlanExecutionService
@NotNull public ExecutorStats getExecutorStats()
NonBlockingPlanExecutionService
ThreadPoolExecutor
getExecutorStats
in interface NonBlockingPlanExecutionService
Copyright © 2020 Atlassian Software Systems Pty Ltd. All rights reserved.