package tech.powerjob.common.model; import lombok.Data; import lombok.NoArgsConstructor; import tech.powerjob.common.PowerSerializable; import java.util.List; /** * Detailed info of job instances. * * @author tjq * @since 2020/4/11 */ @Data @NoArgsConstructor public class InstanceDetail implements PowerSerializable { /** * Expected trigger time. */ private Long expectedTriggerTime; /** * Actual trigger time of an instance. */ private Long actualTriggerTime; /** * Finish time of an instance, which may be null. */ private Long finishedTime; /** * Status of the task instance. */ private Integer status; /** * Execution result, which may be null. */ private String result; /** * Task tracker address. */ private String taskTrackerAddress; /** * 任务参数 */ private String jobParams; /** * Param string that is passed to an instance when it is initialized. */ private String instanceParams; /** * Task detail, used by MapReduce or Broadcast tasks. * 命名有点问题,实际是 task 统计信息 */ private TaskDetail taskDetail; /** * 查询出来的 Task 详细结果 */ private List queriedTaskDetailInfoList; /** * Sub instance details, used by frequent tasks. */ private List subInstanceDetails; /** * Running times. */ private Long runningTimes; /** * Extended fields. Middlewares are not supposed to update frequently. * Changes in PowerJob-common may lead to incompatible versions. * PowerJob-common packages should not be modified if not necessary. */ private String extra; /** * Extra info for frequent tasks, return List. */ @Data @NoArgsConstructor public static class SubInstanceDetail implements PowerSerializable { private long subInstanceId; private Long startTime; private Long finishedTime; private String result; private int status; } /** * Extra info of {@code MapReduce} or {@code Broadcast} type of tasks. */ @Data @NoArgsConstructor public static class TaskDetail implements PowerSerializable { private long totalTaskNum; private long succeedTaskNum; private long failedTaskNum; // 等待派发状态(仅存在 TaskTracker 数据库中) protected Long waitingDispatchTaskNum; // 已派发,但 ProcessorTracker 未确认,可能由于网络错误请求未送达,也有可能 ProcessorTracker 线程池满,拒绝执行 protected Long workerUnreceivedTaskNum; // ProcessorTracker确认接收,存在与线程池队列中,排队执行 protected Long receivedTaskNum; // ProcessorTracker正在执行 protected Long runningTaskNum; } }