@Override
public TaskState restoreFromEvent(HistoryEvent historyEvent) {
switch (historyEvent.getEventType()) {
case TASK_STARTED:
{
TaskStartedEvent tEvent = (TaskStartedEvent) historyEvent;
recoveryStartEventSeen = true;
this.scheduledTime = tEvent.getScheduledTime();
if (this.attempts == null
|| this.attempts.isEmpty()) {
this.attempts = new LinkedHashMap<TezTaskAttemptID, TaskAttempt>();
}
recoveredState = TaskState.SCHEDULED;
finishedAttempts = 0;
return recoveredState;
}
case TASK_FINISHED:
{
TaskFinishedEvent tEvent = (TaskFinishedEvent) historyEvent;
if (!recoveryStartEventSeen
&& !tEvent.getState().equals(TaskState.KILLED)) {
throw new TezUncheckedException("Finished Event seen but"
+ " no Started Event was encountered earlier"
+ ", taskId=" + taskId
+ ", finishState=" + tEvent.getState());
}
recoveredState = tEvent.getState();
if (tEvent.getState() == TaskState.SUCCEEDED
&& tEvent.getSuccessfulAttemptID() != null) {
successfulAttempt = tEvent.getSuccessfulAttemptID();
}
return recoveredState;
}
case TASK_ATTEMPT_STARTED:
{