Forráskód Böngészése

[Improvement]Add a stop function when you are ready to do pause operation (#11543)

* add can stop for execute state machine

* add execute type check for pause operation
juzimao 2 éve
szülő
commit
3b72c6efe7

+ 5 - 1
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ExecutorServiceImpl.java

@@ -478,11 +478,15 @@ public class ExecutorServiceImpl extends BaseServiceImpl implements ExecutorServ
         boolean checkResult = false;
         switch (executeType) {
             case PAUSE:
-            case STOP:
                 if (executionStatus.isRunning()) {
                     checkResult = true;
                 }
                 break;
+            case STOP:
+                if (executionStatus.canStop()) {
+                    checkResult = true;
+                }
+                break;
             case REPEAT_RUNNING:
                 if (executionStatus.isFinished()) {
                     checkResult = true;

+ 4 - 0
dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/enums/WorkflowExecutionStatus.java

@@ -71,6 +71,10 @@ public enum WorkflowExecutionStatus {
         return this == RUNNING_EXECUTION;
     }
 
+    public boolean canStop() {
+        return this == RUNNING_EXECUTION || this == READY_PAUSE;
+    }
+
     public boolean isFinished() {
         // todo: do we need to remove pause/block in finished judge?
         return isSuccess() || isFailure() || isStop() || isPause() || isBlock();