TaskState oldState = getState(); try { stateMachine.doTransition(event.getType(), event); + ", eventType:" + event.getType().name() + ", oldState:" + oldState.name() + ", nextState:" + getState().name() , e); eventHandler.handle(new QueryEvent(TajoIdUtils.parseQueryId(getId().toString()), if (oldState != getState()) { LOG.debug(taskId + " Task Transitioned from " + oldState + " to " + getState());
TaskState oldState = getState(); try { stateMachine.doTransition(event.getType(), event); + ", eventType:" + event.getType().name() + ", oldState:" + oldState.name() + ", nextState:" + getState().name() , e); eventHandler.handle(new QueryEvent(TajoIdUtils.parseQueryId(getId().toString()), if (oldState != getState()) { LOG.debug(taskId + " Task Transitioned from " + oldState + " to " + getState());
@Override public TaskState transition(Task task, TaskEvent taskEvent) { TaskTAttemptFailedEvent attemptEvent = TUtil.checkTypeAndGet(taskEvent, TaskTAttemptFailedEvent.class); task.failedAttempts++; task.finishedAttempts++; boolean retry = task.failedAttempts < task.maxAttempts; LOG.info("===================================================================================="); LOG.info(">>> Task Failed: " + attemptEvent.getTaskAttemptId() + ", " + "retry:" + retry + ", attempts:" + task.failedAttempts + " <<<"); LOG.info("===================================================================================="); if (retry) { if (task.successfulAttempt == null) { task.addAndScheduleAttempt(); } } else { task.finishTask(); task.eventHandler.handle(new StageTaskFailedEvent(task.getId(), attemptEvent.getException())); return TaskState.FAILED; } return task.getState(); } }
@Override public TaskState transition(Task task, TaskEvent taskEvent) { TaskTAttemptFailedEvent attemptEvent = TUtil.checkTypeAndGet(taskEvent, TaskTAttemptFailedEvent.class); task.failedAttempts++; task.finishedAttempts++; boolean retry = task.failedAttempts < task.maxAttempts; LOG.info("===================================================================================="); LOG.info(">>> Task Failed: " + attemptEvent.getTaskAttemptId() + ", " + "retry:" + retry + ", attempts:" + task.failedAttempts + " <<<"); LOG.info("===================================================================================="); if (retry) { if (task.successfulAttempt == null) { task.addAndScheduleAttempt(); } } else { task.finishTask(); task.eventHandler.handle(new StageTaskFailedEvent(task.getId(), attemptEvent.getException())); return TaskState.FAILED; } return task.getState(); } }
@Override public void statusUpdate(RpcController controller, TaskStatusProto request, RpcCallback<PrimitiveProtos.NullProto> done) { QueryId queryId = new QueryId(request.getId().getTaskId().getExecutionBlockId().getQueryId()); TaskAttemptId attemptId = new TaskAttemptId(request.getId()); QueryMasterTask queryMasterTask = queryMaster.getQueryMasterTask(queryId); if (queryMasterTask != null) { Stage sq = queryMasterTask.getQuery().getStage(attemptId.getTaskId().getExecutionBlockId()); Task task = sq.getTask(attemptId.getTaskId()); TaskAttempt attempt = task.getAttempt(attemptId.getId()); if(LOG.isDebugEnabled()){ LOG.debug(String.format("Task State: %s, Attempt State: %s", task.getState().name(), attempt.getState().name())); } if (request.getState() == TajoProtos.TaskAttemptState.TA_KILLED) { LOG.warn(attemptId + " Killed"); attempt.handle( new TaskAttemptEvent(new TaskAttemptId(request.getId()), TaskAttemptEventType.TA_LOCAL_KILLED)); } else { queryMasterTask.getEventHandler().handle( new TaskAttemptStatusUpdateEvent(new TaskAttemptId(request.getId()), request)); } } done.run(TajoWorker.NULL_PROTO); }
@Override public void statusUpdate(RpcController controller, TaskStatusProto request, RpcCallback<PrimitiveProtos.NullProto> done) { QueryId queryId = new QueryId(request.getId().getTaskId().getExecutionBlockId().getQueryId()); TaskAttemptId attemptId = new TaskAttemptId(request.getId()); QueryMasterTask queryMasterTask = queryMaster.getQueryMasterTask(queryId); if (queryMasterTask != null) { Stage sq = queryMasterTask.getQuery().getStage(attemptId.getTaskId().getExecutionBlockId()); Task task = sq.getTask(attemptId.getTaskId()); TaskAttempt attempt = task.getAttempt(attemptId.getId()); if(LOG.isDebugEnabled()){ LOG.debug(String.format("Task State: %s, Attempt State: %s", task.getState().name(), attempt.getState().name())); } if (request.getState() == TajoProtos.TaskAttemptState.TA_KILLED) { LOG.warn(attemptId + " Killed"); attempt.handle( new TaskAttemptEvent(new TaskAttemptId(request.getId()), TaskAttemptEventType.TA_LOCAL_KILLED)); } else { queryMasterTask.getEventHandler().handle( new TaskAttemptStatusUpdateEvent(new TaskAttemptId(request.getId()), request)); } } done.run(TajoWorker.NULL_PROTO); }