Add is success in loop task status (#11169)

This commit is contained in:
Wenjun Ruan 2022-07-28 12:12:01 +08:00 committed by GitHub
parent 81fa09678c
commit 052ceaacd0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 2 deletions

View File

@ -54,10 +54,21 @@ public abstract class BaseLoopTaskExecutor extends AbstractTaskExecutor {
// loop the task status until the task is finished or task has been canceled.
// we use retry utils here to avoid the task status query failure due to network failure.
// the default retry policy is 3 times, and the interval is 1 second.
while (!cancel
&& !RetryUtils.retryFunction(() -> queryTaskInstanceStatus(loopTaskInstanceInfo).isFinished())) {
LoopTaskInstanceStatus loopTaskInstanceStatus = null;
while (!cancel) {
loopTaskInstanceStatus = RetryUtils.retryFunction(() -> queryTaskInstanceStatus(loopTaskInstanceInfo));
if (loopTaskInstanceStatus.isFinished()) {
break;
}
Thread.sleep(loopInterval);
}
if (loopTaskInstanceStatus != null && loopTaskInstanceStatus.isSuccess()) {
setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
logger.info("The task instance: {} execute successfully.", appIds);
} else {
setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE);
logger.info("The task instance: {} is execute failure.", appIds);
}
} catch (InterruptedException e) {
setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE);
logger.error("The current loop thread has been interrupted", e);

View File

@ -23,7 +23,15 @@ package org.apache.dolphinscheduler.plugin.task.api.loop;
public interface LoopTaskInstanceStatus {
/**
* Judge if the task instance is finished.
*
* @return true if the task instance is finished, false otherwise.
*/
boolean isFinished();
/**
* Judge if the task instance is success.
*
* @return true if the task instance is success, false otherwise.
*/
boolean isSuccess();
}

View File

@ -28,4 +28,8 @@ public class HttpLoopTaskInstanceStatus implements LoopTaskInstanceStatus {
private final boolean finished;
@Override
public boolean isSuccess() {
return true;
}
}