YARN-6948. Invalid event: ATTEMPT_ADDED at FINAL_SAVING. Contributed by lujie
This commit is contained in:
parent
ebff4decfe
commit
90c86d6e09
|
@ -418,7 +418,8 @@ public class RMAppAttemptImpl implements RMAppAttempt, Recoverable {
|
||||||
RMAppAttemptEventType.CONTAINER_ALLOCATED,
|
RMAppAttemptEventType.CONTAINER_ALLOCATED,
|
||||||
RMAppAttemptEventType.ATTEMPT_NEW_SAVED,
|
RMAppAttemptEventType.ATTEMPT_NEW_SAVED,
|
||||||
RMAppAttemptEventType.KILL,
|
RMAppAttemptEventType.KILL,
|
||||||
RMAppAttemptEventType.FAIL))
|
RMAppAttemptEventType.FAIL,
|
||||||
|
RMAppAttemptEventType.ATTEMPT_ADDED))
|
||||||
|
|
||||||
// Transitions from FAILED State
|
// Transitions from FAILED State
|
||||||
// For work-preserving AM restart, failed attempt are still capturing
|
// For work-preserving AM restart, failed attempt are still capturing
|
||||||
|
@ -909,7 +910,7 @@ public class RMAppAttemptImpl implements RMAppAttempt, Recoverable {
|
||||||
} catch (InvalidStateTransitionException e) {
|
} catch (InvalidStateTransitionException e) {
|
||||||
LOG.error("App attempt: " + appAttemptID
|
LOG.error("App attempt: " + appAttemptID
|
||||||
+ " can't handle this event at current state", e);
|
+ " can't handle this event at current state", e);
|
||||||
/* TODO fail the application on the failed transition */
|
onInvalidTranstion(event.getType(), oldState);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Log at INFO if we're not recovering or not in a terminal state.
|
// Log at INFO if we're not recovering or not in a terminal state.
|
||||||
|
@ -2240,4 +2241,8 @@ public class RMAppAttemptImpl implements RMAppAttempt, Recoverable {
|
||||||
return Collections.EMPTY_SET;
|
return Collections.EMPTY_SET;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void onInvalidTranstion(RMAppAttemptEventType rmAppAttemptEventType,
|
||||||
|
RMAppAttemptState state){
|
||||||
|
/* TODO fail the application on the failed transition */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -327,7 +327,15 @@ public class TestRMAppAttemptTransitions {
|
||||||
masterService, submissionContext, new Configuration(),
|
masterService, submissionContext, new Configuration(),
|
||||||
Collections.singletonList(BuilderUtils.newResourceRequest(
|
Collections.singletonList(BuilderUtils.newResourceRequest(
|
||||||
RMAppAttemptImpl.AM_CONTAINER_PRIORITY, ResourceRequest.ANY,
|
RMAppAttemptImpl.AM_CONTAINER_PRIORITY, ResourceRequest.ANY,
|
||||||
submissionContext.getResource(), 1)), application);
|
submissionContext.getResource(), 1)), application) {
|
||||||
|
@Override
|
||||||
|
protected void onInvalidTranstion(
|
||||||
|
RMAppAttemptEventType rmAppAttemptEventType,
|
||||||
|
RMAppAttemptState state) {
|
||||||
|
Assert.assertTrue("RMAppAttemptImpl can't handle "
|
||||||
|
+ rmAppAttemptEventType + " at state " + state, false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
when(application.getCurrentAppAttempt()).thenReturn(applicationAttempt);
|
when(application.getCurrentAppAttempt()).thenReturn(applicationAttempt);
|
||||||
when(application.getApplicationId()).thenReturn(applicationId);
|
when(application.getApplicationId()).thenReturn(applicationId);
|
||||||
|
@ -974,6 +982,23 @@ public class TestRMAppAttemptTransitions {
|
||||||
applicationAttempt.getAppAttemptState());
|
applicationAttempt.getAppAttemptState());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(timeout = 10000)
|
||||||
|
public void testAttemptAddedAtFinalSaving() {
|
||||||
|
submitApplicationAttempt();
|
||||||
|
|
||||||
|
// SUBNITED->FINAL_SAVING
|
||||||
|
applicationAttempt.handle(new RMAppAttemptEvent(applicationAttempt
|
||||||
|
.getAppAttemptId(), RMAppAttemptEventType.KILL));
|
||||||
|
assertEquals(RMAppAttemptState.FINAL_SAVING,
|
||||||
|
applicationAttempt.getAppAttemptState());
|
||||||
|
|
||||||
|
applicationAttempt.handle(new RMAppAttemptEvent(applicationAttempt
|
||||||
|
.getAppAttemptId(), RMAppAttemptEventType.ATTEMPT_ADDED));
|
||||||
|
|
||||||
|
assertEquals(RMAppAttemptState.FINAL_SAVING,
|
||||||
|
applicationAttempt.getAppAttemptState());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAMCrashAtAllocated() {
|
public void testAMCrashAtAllocated() {
|
||||||
Container amContainer = allocateApplicationAttempt();
|
Container amContainer = allocateApplicationAttempt();
|
||||||
|
|
Loading…
Reference in New Issue