@Override
public TaskAttemptState restoreFromEvent(HistoryEvent historyEvent) {
switch (historyEvent.getEventType()) {
case TASK_ATTEMPT_STARTED:
{
TaskAttemptStartedEvent tEvent = (TaskAttemptStartedEvent) historyEvent;
this.launchTime = tEvent.getStartTime();
recoveryStartEventSeen = true;
recoveredState = TaskAttemptState.RUNNING;
return recoveredState;
}
case TASK_ATTEMPT_FINISHED:
{
if (!recoveryStartEventSeen) {
throw new RuntimeException("Finished Event seen but"
+ " no Started Event was encountered earlier");
}
TaskAttemptFinishedEvent tEvent = (TaskAttemptFinishedEvent) historyEvent;
this.finishTime = tEvent.getFinishTime();
this.reportedStatus.counters = tEvent.getCounters();
this.reportedStatus.progress = 1f;
this.reportedStatus.state = tEvent.getState();
this.diagnostics.add(tEvent.getDiagnostics());
this.recoveredState = tEvent.getState();
return recoveredState;
}
default:
throw new RuntimeException("Unexpected event received for restoring"
+ " state, eventType=" + historyEvent.getEventType());