You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2022/10/21 13:58:00 UTC

[brooklyn-server] 08/11: use constants for special steps -1 -2

This is an automated email from the ASF dual-hosted git repository.

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git

commit bed78cd4877fbed824d51d6a4f2b782e27ccd502
Author: Alex Heneveld <al...@cloudsoft.io>
AuthorDate: Thu Oct 20 17:53:27 2022 +0100

    use constants for special steps -1 -2
---
 .../core/workflow/WorkflowErrorHandling.java       |  2 +-
 .../core/workflow/WorkflowExecutionContext.java    | 37 ++++++++++++----------
 .../core/workflow/WorkflowReplayUtils.java         |  6 ++--
 3 files changed, 25 insertions(+), 20 deletions(-)

diff --git a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowErrorHandling.java b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowErrorHandling.java
index 6d3e966836..f17d25792d 100644
--- a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowErrorHandling.java
+++ b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowErrorHandling.java
@@ -97,7 +97,7 @@ public class WorkflowErrorHandling implements Callable<WorkflowErrorHandling.Wor
 
             WorkflowStepDefinition errorStep = errorOptions.get(i);
 
-            WorkflowStepInstanceExecutionContext handlerContext = new WorkflowStepInstanceExecutionContext(stepIndexIfStepErrorHandler!=null ? stepIndexIfStepErrorHandler : -3, errorStep, context);
+            WorkflowStepInstanceExecutionContext handlerContext = new WorkflowStepInstanceExecutionContext(stepIndexIfStepErrorHandler!=null ? stepIndexIfStepErrorHandler : WorkflowExecutionContext.STEP_INDEX_FOR_ERROR_HANDLER, errorStep, context);
             context.errorHandlerContext = handlerContext;
             handlerContext.error = error;
 
diff --git a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowExecutionContext.java b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowExecutionContext.java
index 388ea5101c..90e32abd10 100644
--- a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowExecutionContext.java
+++ b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowExecutionContext.java
@@ -70,6 +70,11 @@ public class WorkflowExecutionContext {
 
     private static final Logger log = LoggerFactory.getLogger(WorkflowExecutionContext.class);
 
+    public static final int STEP_INDEX_FOR_START = -1;
+    public static final int STEP_INDEX_FOR_END = -2;
+    public static final int STEP_INDEX_FOR_ERROR_HANDLER = -3;
+
+
     String name;
     @Nullable BrooklynObject adjunct;
     Entity entity;
@@ -324,7 +329,7 @@ public class WorkflowExecutionContext {
             Set<Integer> considered = MutableSet.of();
             Set<Integer> possibleOthers = MutableSet.of();
             while (true) {
-                if (WorkflowReplayUtils.isReplayable(this, stepIndex) || stepIndex == -1) {
+                if (WorkflowReplayUtils.isReplayable(this, stepIndex) || stepIndex == STEP_INDEX_FOR_START) {
                     break;
                 }
 
@@ -332,14 +337,14 @@ public class WorkflowExecutionContext {
                 OldStepRecord osi = oldStepInfo.get(stepIndex);
                 if (osi == null) {
                     log.warn("Unable to backtrack from step " + (stepIndex) + "; no step information. Replaying overall workflow.");
-                    stepIndex = -1;
+                    stepIndex = STEP_INDEX_FOR_START;
                     break;
                 }
 
                 Set<Integer> prev = osi.previous;
                 if (prev == null || prev.isEmpty()) {
                     log.warn("Unable to backtrack from step " + (stepIndex) + "; no previous step recorded. Replaying overall workflow.");
-                    stepIndex = -1;
+                    stepIndex = STEP_INDEX_FOR_START;
                     break;
                 }
 
@@ -347,7 +352,7 @@ public class WorkflowExecutionContext {
                 if (repeating) {
                     if (possibleOthers.size() != 1) {
                         log.warn("Unable to backtrack from step " + (stepIndex) + "; ambiguous precedents " + prev + " / " + possibleOthers + ". Replaying overall workflow.");
-                        stepIndex = -1;
+                        stepIndex = STEP_INDEX_FOR_START;
                         break;
                     } else {
                         stepIndex = possibleOthers.iterator().next();
@@ -371,7 +376,7 @@ public class WorkflowExecutionContext {
     }
 
     public WorkflowStepDefinition.ReplayContinuationInstructions makeInstructionsForReplayingFromStart(String reason, boolean forced) {
-        return makeInstructionsForReplayingFromStep(-1, reason, forced);
+        return makeInstructionsForReplayingFromStep(STEP_INDEX_FOR_START, reason, forced);
     }
 
     public WorkflowStepDefinition.ReplayContinuationInstructions makeInstructionsForReplayingLast(String reason, boolean forced) {
@@ -386,7 +391,7 @@ public class WorkflowExecutionContext {
         Integer replayFromStep = null;
         if (currentStepIndex == null) {
             // not yet started
-            replayFromStep = -1;
+            replayFromStep = STEP_INDEX_FOR_START;
         } else if (currentStepInstance == null || currentStepInstance.stepIndex != currentStepIndex) {
             // replaying from a different step, or current step which has either not run or completed but didn't save
             log.debug("Replaying workflow '" + name + "', cannot replay within step " + currentStepIndex + " because step instance not known; will reinitialize then replay that step");
@@ -424,7 +429,7 @@ public class WorkflowExecutionContext {
                 .tag(BrooklynTaskTags.tagForWorkflow(this))
                 .tag(BrooklynTaskTags.WORKFLOW_TAG)
                 .body(new Body(continuationInstructions)).build();
-        WorkflowReplayUtils.updateOnWorkflowStartOrReplay(this, task, continuationInstructions.customBehaviourExplanation, continuationInstructions.stepToReplayFrom!=null && continuationInstructions.stepToReplayFrom!=-1);
+        WorkflowReplayUtils.updateOnWorkflowStartOrReplay(this, task, continuationInstructions.customBehaviourExplanation, continuationInstructions.stepToReplayFrom!=null && continuationInstructions.stepToReplayFrom!=STEP_INDEX_FOR_START);
 
         taskId = task.getId();
 
@@ -629,7 +634,7 @@ public class WorkflowExecutionContext {
                         status = WorkflowStatus.RUNNING;
 
                         if (replaying) {
-                            if (replayFromStep != null && replayFromStep == -1) {
+                            if (replayFromStep != null && replayFromStep == STEP_INDEX_FOR_START) {
                                 log.debug("Replaying workflow '" + name + "', from start " +
                                         " (was at " + (currentStepIndex == null ? "<UNSTARTED>" : workflowStepReference(currentStepIndex)) + ")");
                                 currentStepIndex = 0;
@@ -699,13 +704,13 @@ public class WorkflowExecutionContext {
                         // finished -- checkpoint noting previous step and null for current because finished
                         status = WorkflowStatus.SUCCESS;
                         // record how it ended
-                        oldStepInfo.compute(previousStepIndex == null ? -1 : previousStepIndex, (index, old) -> {
+                        oldStepInfo.compute(previousStepIndex == null ? STEP_INDEX_FOR_START : previousStepIndex, (index, old) -> {
                             if (old == null) old = new OldStepRecord();
-                            old.next = MutableSet.<Integer>of(-1).putAll(old.next);
+                            old.next = MutableSet.<Integer>of(STEP_INDEX_FOR_START).putAll(old.next);
                             old.nextTaskId = null;
                             return old;
                         });
-                        oldStepInfo.compute(-1, (index, old) -> {
+                        oldStepInfo.compute(STEP_INDEX_FOR_START, (index, old) -> {
                             if (old == null) old = new OldStepRecord();
                             old.previous = MutableSet.<Integer>of(previousStepIndex).putAll(old.previous);
                             old.previousTaskId = previousStepTaskId;
@@ -879,12 +884,12 @@ public class WorkflowExecutionContext {
                 if (!workflowScratchVariables.isEmpty())
                     old.workflowScratch = MutableMap.copyOf(workflowScratchVariables);
                 else old.workflowScratch = null;
-                old.previous = MutableSet.<Integer>of(previousStepIndex == null ? -1 : previousStepIndex).putAll(old.previous);
+                old.previous = MutableSet.<Integer>of(previousStepIndex == null ? STEP_INDEX_FOR_START : previousStepIndex).putAll(old.previous);
                 old.previousTaskId = previousStepTaskId;
                 old.nextTaskId = null;
                 return old;
             });
-            oldStepInfo.compute(previousStepIndex==null ? -1 : previousStepIndex, (index, old) -> {
+            oldStepInfo.compute(previousStepIndex==null ? STEP_INDEX_FOR_START : previousStepIndex, (index, old) -> {
                 if (old==null) old = new OldStepRecord();
                 old.next = MutableSet.<Integer>of(currentStepIndex).putAll(old.next);
                 old.nextTaskId = t.getId();
@@ -1036,9 +1041,9 @@ public class WorkflowExecutionContext {
 
     private String indexCode(int index) {
         // these numbers shouldn't be used for much, but they are used in a few places :(
-        if (index==-1) return "start";
-        if (index==-2) return "end";
-        if (index==-3) return "error-handler";
+        if (index==STEP_INDEX_FOR_START) return "start";
+        if (index==STEP_INDEX_FOR_END) return "end";
+        if (index==STEP_INDEX_FOR_ERROR_HANDLER) return "error-handler";
         return "neg-"+(index); // unknown
     }
 
diff --git a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowReplayUtils.java b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowReplayUtils.java
index 579bc1d96a..30112ea2c3 100644
--- a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowReplayUtils.java
+++ b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowReplayUtils.java
@@ -118,7 +118,7 @@ public class WorkflowReplayUtils {
 
     public static void updateOnWorkflowSuccess(WorkflowExecutionContext ctx, Task<?> task, Object result) {
         WorkflowReplayRecord.updateInternal(ctx, task, true, result);
-        ctx.replayableLastStep = -2;
+        ctx.replayableLastStep = WorkflowExecutionContext.STEP_INDEX_FOR_END;
     }
 
     public static void updateOnWorkflowError(WorkflowExecutionContext ctx, Task<?> task, Throwable error) {
@@ -193,8 +193,8 @@ public class WorkflowReplayUtils {
             // forced, eg throwing exception
             return subWorkflow.createTaskReplaying(subWorkflow.makeInstructionsForReplayingLastForcedWithCustom(instructions.customBehaviourExplanation, instructions.customBehaviour));
         } else {
-            if (Objects.equals(subWorkflow.replayableLastStep, -2)) return null;
-            // may throw if not forced and not replayable
+            if (Objects.equals(subWorkflow.replayableLastStep, WorkflowExecutionContext.STEP_INDEX_FOR_END)) return null;
+            // may throw if not forced and not replayable[
             return subWorkflow.createTaskReplaying(subWorkflow.makeInstructionsForReplayingLast(instructions.customBehaviourExplanation, instructions.forced));
         }
     }