Add is success in loop task status (#11169)
This commit is contained in:
parent
81fa09678c
commit
052ceaacd0
|
|
@ -54,10 +54,21 @@ public abstract class BaseLoopTaskExecutor extends AbstractTaskExecutor {
|
||||||
// loop the task status until the task is finished or task has been canceled.
|
// 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.
|
// 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.
|
// the default retry policy is 3 times, and the interval is 1 second.
|
||||||
while (!cancel
|
LoopTaskInstanceStatus loopTaskInstanceStatus = null;
|
||||||
&& !RetryUtils.retryFunction(() -> queryTaskInstanceStatus(loopTaskInstanceInfo).isFinished())) {
|
while (!cancel) {
|
||||||
|
loopTaskInstanceStatus = RetryUtils.retryFunction(() -> queryTaskInstanceStatus(loopTaskInstanceInfo));
|
||||||
|
if (loopTaskInstanceStatus.isFinished()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
Thread.sleep(loopInterval);
|
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) {
|
} catch (InterruptedException e) {
|
||||||
setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE);
|
setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE);
|
||||||
logger.error("The current loop thread has been interrupted", e);
|
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 {
|
public interface LoopTaskInstanceStatus {
|
||||||
/**
|
/**
|
||||||
* Judge if the task instance is finished.
|
* Judge if the task instance is finished.
|
||||||
|
*
|
||||||
* @return true if the task instance is finished, false otherwise.
|
* @return true if the task instance is finished, false otherwise.
|
||||||
*/
|
*/
|
||||||
boolean isFinished();
|
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;
|
private final boolean finished;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSuccess() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue