YARN-2856. Fixed RMAppImpl to handle ATTEMPT_KILLED event at ACCEPTED state on app recovery. Contributed by Rohith Sharmaks
(cherry picked from commitd005404ef7
) (cherry picked from commitbeb184ac58
) (cherry picked from commit 325bb33988743d60cb333002f9da60314241632e)
This commit is contained in:
parent
d6666e8d26
commit
81ba30211e
|
@ -12,6 +12,9 @@ Release 2.6.1 - UNRELEASED
|
||||||
|
|
||||||
BUG FIXES
|
BUG FIXES
|
||||||
|
|
||||||
|
YARN-2856. Fixed RMAppImpl to handle ATTEMPT_KILLED event at ACCEPTED state
|
||||||
|
on app recovery. (Rohith Sharmaks via jianhe)
|
||||||
|
|
||||||
Release 2.6.0 - 2014-11-18
|
Release 2.6.0 - 2014-11-18
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -229,6 +229,9 @@ public class RMAppImpl implements RMApp, Recoverable {
|
||||||
new FinalSavingTransition(FINISHED_TRANSITION, RMAppState.FINISHED))
|
new FinalSavingTransition(FINISHED_TRANSITION, RMAppState.FINISHED))
|
||||||
.addTransition(RMAppState.ACCEPTED, RMAppState.KILLING,
|
.addTransition(RMAppState.ACCEPTED, RMAppState.KILLING,
|
||||||
RMAppEventType.KILL, new KillAttemptTransition())
|
RMAppEventType.KILL, new KillAttemptTransition())
|
||||||
|
.addTransition(RMAppState.ACCEPTED, RMAppState.FINAL_SAVING,
|
||||||
|
RMAppEventType.ATTEMPT_KILLED,
|
||||||
|
new FinalSavingTransition(new AppKilledTransition(), RMAppState.KILLED))
|
||||||
.addTransition(RMAppState.ACCEPTED, RMAppState.ACCEPTED,
|
.addTransition(RMAppState.ACCEPTED, RMAppState.ACCEPTED,
|
||||||
RMAppEventType.APP_RUNNING_ON_NODE,
|
RMAppEventType.APP_RUNNING_ON_NODE,
|
||||||
new AppRunningOnNodeTransition())
|
new AppRunningOnNodeTransition())
|
||||||
|
|
|
@ -715,6 +715,29 @@ public class TestRMAppTransitions {
|
||||||
verifyAppRemovedSchedulerEvent(RMAppState.KILLED);
|
verifyAppRemovedSchedulerEvent(RMAppState.KILLED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAppAcceptedAttemptKilled() throws IOException,
|
||||||
|
InterruptedException {
|
||||||
|
LOG.info("--- START: testAppAcceptedAttemptKilled ---");
|
||||||
|
RMApp application = testCreateAppAccepted(null);
|
||||||
|
|
||||||
|
// ACCEPTED => FINAL_SAVING event RMAppEventType.ATTEMPT_KILLED
|
||||||
|
// When application recovery happens for attempt is KILLED but app is
|
||||||
|
// RUNNING.
|
||||||
|
RMAppEvent event =
|
||||||
|
new RMAppEvent(application.getApplicationId(),
|
||||||
|
RMAppEventType.ATTEMPT_KILLED);
|
||||||
|
application.handle(event);
|
||||||
|
rmDispatcher.await();
|
||||||
|
|
||||||
|
assertAppState(RMAppState.FINAL_SAVING, application);
|
||||||
|
sendAppUpdateSavedEvent(application);
|
||||||
|
assertKilled(application);
|
||||||
|
assertAppFinalStateSaved(application);
|
||||||
|
verifyApplicationFinished(RMAppState.KILLED);
|
||||||
|
verifyAppRemovedSchedulerEvent(RMAppState.KILLED);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAppRunningKill() throws IOException {
|
public void testAppRunningKill() throws IOException {
|
||||||
LOG.info("--- START: testAppRunningKill ---");
|
LOG.info("--- START: testAppRunningKill ---");
|
||||||
|
|
Loading…
Reference in New Issue