未验证 提交 052ceaac 编写于 作者: W Wenjun Ruan 提交者: GitHub

Add is success in loop task status (#11169)

上级 81fa0967
......@@ -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);
......
......@@ -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();
}
......@@ -28,4 +28,8 @@ public class HttpLoopTaskInstanceStatus implements LoopTaskInstanceStatus {
private final boolean finished;
@Override
public boolean isSuccess() {
return true;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册