Browse Source

[bug fix] fix bug:2634:Process shows success,when the task of the process is killed in the terminal (#2731)

* fix bug: some bugs about worker group from 1.2.0 to 1.3.0

* fix bug: scheduler from 1.2.0 to 1.3.0 do not work

* fix bug: scheduler from 1.2.0 to 1.3.0 do not work

* fix ut bug

* fix bug: Process shows success,when the task of the process is killed in the termina

* fix bug #2634: Process shows success,when the task of the process is killed in the terminal

Co-authored-by: baoliang <baoliang@analysys.com.cn>
pull/3/MERGE
bao liang 4 years ago committed by GitHub
parent
commit
a9da86abb4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/enums/ExecutionStatus.java
  2. 12
      dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterExecThread.java

2
dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/enums/ExecutionStatus.java

@ -76,7 +76,7 @@ public enum ExecutionStatus {
* @return status * @return status
*/ */
public boolean typeIsFailure(){ public boolean typeIsFailure(){
return this == FAILURE || this == NEED_FAULT_TOLERANCE || this == KILL; return this == FAILURE || this == NEED_FAULT_TOLERANCE;
} }
/** /**

12
dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/master/runner/MasterExecThread.java

@ -805,7 +805,8 @@ public class MasterExecThread implements Runnable {
ProcessInstance instance = processService.findProcessInstanceById(processInstance.getId()); ProcessInstance instance = processService.findProcessInstanceById(processInstance.getId());
ExecutionStatus state = instance.getState(); ExecutionStatus state = instance.getState();
if(activeTaskNode.size() > 0 || haveRetryTaskStandBy()){ if(activeTaskNode.size() > 0 || retryTaskExists()){
// active task and retry task exists
return runningState(state); return runningState(state);
} }
// process failure // process failure
@ -828,7 +829,8 @@ public class MasterExecThread implements Runnable {
List<TaskInstance> stopList = getCompleteTaskByState(ExecutionStatus.STOP); List<TaskInstance> stopList = getCompleteTaskByState(ExecutionStatus.STOP);
List<TaskInstance> killList = getCompleteTaskByState(ExecutionStatus.KILL); List<TaskInstance> killList = getCompleteTaskByState(ExecutionStatus.KILL);
if(CollectionUtils.isNotEmpty(stopList) if(CollectionUtils.isNotEmpty(stopList)
|| CollectionUtils.isNotEmpty(killList) || !isComplementEnd()){ || CollectionUtils.isNotEmpty(killList)
|| !isComplementEnd()){
return ExecutionStatus.STOP; return ExecutionStatus.STOP;
}else{ }else{
return ExecutionStatus.SUCCESS; return ExecutionStatus.SUCCESS;
@ -837,9 +839,13 @@ public class MasterExecThread implements Runnable {
// success // success
if(state == ExecutionStatus.RUNNING_EXEUTION){ if(state == ExecutionStatus.RUNNING_EXEUTION){
List<TaskInstance> killTasks = getCompleteTaskByState(ExecutionStatus.KILL);
if(readyToSubmitTaskList.size() > 0){ if(readyToSubmitTaskList.size() > 0){
//tasks currently pending submission, no retries, indicating that depend is waiting to complete //tasks currently pending submission, no retries, indicating that depend is waiting to complete
return ExecutionStatus.RUNNING_EXEUTION; return ExecutionStatus.RUNNING_EXEUTION;
}else if(CollectionUtils.isNotEmpty(killTasks)){
// tasks maybe killed manually
return ExecutionStatus.FAILURE;
}else{ }else{
// if the waiting queue is empty and the status is in progress, then success // if the waiting queue is empty and the status is in progress, then success
return ExecutionStatus.SUCCESS; return ExecutionStatus.SUCCESS;
@ -853,7 +859,7 @@ public class MasterExecThread implements Runnable {
* whether standby task list have retry tasks * whether standby task list have retry tasks
* @return * @return
*/ */
private boolean haveRetryTaskStandBy() { private boolean retryTaskExists() {
boolean result = false; boolean result = false;

Loading…
Cancel
Save