YARN-1345. Remove FINAL_SAVING state from YarnApplicationAttemptState. Contributed by Zhijie Shen
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1567820 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
0185a57847
commit
dab635980d
@ -181,6 +181,9 @@ Release 2.4.0 - UNRELEASED
|
||||
|
||||
YARN-1531. True up yarn command documentation (Akira Ajisaka via kasha)
|
||||
|
||||
YARN-1345. Remove FINAL_SAVING state from YarnApplicationAttemptState
|
||||
(Zhijie Shen via jianhe)
|
||||
|
||||
OPTIMIZATIONS
|
||||
|
||||
BUG FIXES
|
||||
|
@ -51,9 +51,6 @@ public enum YarnApplicationAttemptState {
|
||||
/** AppAttempt is currently running. */
|
||||
RUNNING,
|
||||
|
||||
/** AppAttempt is waiting for state bing saved */
|
||||
FINAL_SAVING,
|
||||
|
||||
/** AppAttempt is finishing. */
|
||||
FINISHING,
|
||||
|
||||
|
@ -120,10 +120,9 @@ enum YarnApplicationAttemptStateProto {
|
||||
APP_ATTEMPT_LAUNCHED = 6;
|
||||
APP_ATTEMPT_FAILED = 7;
|
||||
APP_ATTEMPT_RUNNING = 8;
|
||||
APP_ATTEMPT_FINAL_SAVING = 9;
|
||||
APP_ATTEMPT_FINISHING = 10;
|
||||
APP_ATTEMPT_FINISHED = 11;
|
||||
APP_ATTEMPT_KILLED = 12;
|
||||
APP_ATTEMPT_FINISHING = 9;
|
||||
APP_ATTEMPT_FINISHED = 10;
|
||||
APP_ATTEMPT_KILLED = 11;
|
||||
}
|
||||
|
||||
enum FinalApplicationStatusProto {
|
||||
|
@ -214,8 +214,6 @@ public static YarnApplicationAttemptState createApplicationAttemptState(
|
||||
return YarnApplicationAttemptState.RUNNING;
|
||||
case FINISHING:
|
||||
return YarnApplicationAttemptState.FINISHING;
|
||||
case FINAL_SAVING:
|
||||
return YarnApplicationAttemptState.FINAL_SAVING;
|
||||
case FINISHED:
|
||||
return YarnApplicationAttemptState.FINISHED;
|
||||
case KILLED:
|
||||
|
@ -157,6 +157,7 @@ public class RMAppAttemptImpl implements RMAppAttempt, Recoverable {
|
||||
private RMAppAttemptEvent eventCausingFinalSaving;
|
||||
private RMAppAttemptState targetedFinalState;
|
||||
private RMAppAttemptState recoveredFinalState;
|
||||
private RMAppAttemptState stateBeforeFinalSaving;
|
||||
private Object transitionTodo;
|
||||
|
||||
private static final StateMachineFactory<RMAppAttemptImpl,
|
||||
@ -885,6 +886,7 @@ private void rememberTargetTransitionsAndStoreState(RMAppAttemptEvent event,
|
||||
RMAppAttemptState stateToBeStored) {
|
||||
|
||||
rememberTargetTransitions(event, transitionToDo, targetFinalState);
|
||||
stateBeforeFinalSaving = getState();
|
||||
|
||||
// As of today, finalState, diagnostics, final-tracking-url and
|
||||
// finalAppStatus are the only things that we store into the StateStore
|
||||
@ -1536,6 +1538,10 @@ public RMAppAttemptState getState() {
|
||||
@Override
|
||||
public YarnApplicationAttemptState createApplicationAttemptState() {
|
||||
RMAppAttemptState state = getState();
|
||||
// If AppAttempt is in FINAL_SAVING state, return its previous state.
|
||||
if (state.equals(RMAppAttemptState.FINAL_SAVING)) {
|
||||
state = stateBeforeFinalSaving;
|
||||
}
|
||||
return RMServerUtils.createApplicationAttemptState(state);
|
||||
}
|
||||
|
||||
|
@ -57,6 +57,7 @@
|
||||
import org.apache.hadoop.yarn.api.records.ContainerStatus;
|
||||
import org.apache.hadoop.yarn.api.records.FinalApplicationStatus;
|
||||
import org.apache.hadoop.yarn.api.records.Resource;
|
||||
import org.apache.hadoop.yarn.api.records.YarnApplicationAttemptState;
|
||||
import org.apache.hadoop.yarn.event.AsyncDispatcher;
|
||||
import org.apache.hadoop.yarn.event.EventHandler;
|
||||
import org.apache.hadoop.yarn.event.InlineDispatcher;
|
||||
@ -695,6 +696,8 @@ public void testUnmanagedAMUnexpectedRegistration() {
|
||||
// launch AM and verify attempt failed
|
||||
applicationAttempt.handle(new RMAppAttemptRegistrationEvent(
|
||||
applicationAttempt.getAppAttemptId(), "host", 8042, "oldtrackingurl"));
|
||||
assertEquals(YarnApplicationAttemptState.SUBMITTED,
|
||||
applicationAttempt.createApplicationAttemptState());
|
||||
testAppAttemptSubmittedToFailedState(
|
||||
"Unmanaged AM must register after AM attempt reaches LAUNCHED state.");
|
||||
}
|
||||
@ -710,6 +713,8 @@ public void testUnmanagedAMContainersCleanup() {
|
||||
// launch AM and verify attempt failed
|
||||
applicationAttempt.handle(new RMAppAttemptRegistrationEvent(
|
||||
applicationAttempt.getAppAttemptId(), "host", 8042, "oldtrackingurl"));
|
||||
assertEquals(YarnApplicationAttemptState.SUBMITTED,
|
||||
applicationAttempt.createApplicationAttemptState());
|
||||
sendAttemptUpdateSavedEvent(applicationAttempt);
|
||||
assertFalse(transferStateFromPreviousAttempt);
|
||||
}
|
||||
@ -720,6 +725,8 @@ public void testNewToKilled() {
|
||||
new RMAppAttemptEvent(
|
||||
applicationAttempt.getAppAttemptId(),
|
||||
RMAppAttemptEventType.KILL));
|
||||
assertEquals(YarnApplicationAttemptState.NEW,
|
||||
applicationAttempt.createApplicationAttemptState());
|
||||
testAppAttemptKilledState(null, EMPTY_DIAGNOSTICS);
|
||||
verifyTokenCount(applicationAttempt.getAppAttemptId(), 1);
|
||||
}
|
||||
@ -740,6 +747,8 @@ public void testSubmittedToKilled() {
|
||||
new RMAppAttemptEvent(
|
||||
applicationAttempt.getAppAttemptId(),
|
||||
RMAppAttemptEventType.KILL));
|
||||
assertEquals(YarnApplicationAttemptState.SUBMITTED,
|
||||
applicationAttempt.createApplicationAttemptState());
|
||||
testAppAttemptKilledState(null, EMPTY_DIAGNOSTICS);
|
||||
}
|
||||
|
||||
@ -750,6 +759,8 @@ public void testScheduledToKilled() {
|
||||
new RMAppAttemptEvent(
|
||||
applicationAttempt.getAppAttemptId(),
|
||||
RMAppAttemptEventType.KILL));
|
||||
assertEquals(YarnApplicationAttemptState.SCHEDULED,
|
||||
applicationAttempt.createApplicationAttemptState());
|
||||
testAppAttemptKilledState(null, EMPTY_DIAGNOSTICS);
|
||||
}
|
||||
|
||||
@ -760,6 +771,8 @@ public void testAllocatedToKilled() {
|
||||
new RMAppAttemptEvent(
|
||||
applicationAttempt.getAppAttemptId(),
|
||||
RMAppAttemptEventType.KILL));
|
||||
assertEquals(YarnApplicationAttemptState.ALLOCATED,
|
||||
applicationAttempt.createApplicationAttemptState());
|
||||
testAppAttemptKilledState(amContainer, EMPTY_DIAGNOSTICS);
|
||||
}
|
||||
|
||||
@ -771,6 +784,8 @@ public void testAllocatedToFailed() {
|
||||
new RMAppAttemptLaunchFailedEvent(
|
||||
applicationAttempt.getAppAttemptId(),
|
||||
diagnostics));
|
||||
assertEquals(YarnApplicationAttemptState.ALLOCATED,
|
||||
applicationAttempt.createApplicationAttemptState());
|
||||
testAppAttemptFailedState(amContainer, diagnostics);
|
||||
}
|
||||
|
||||
@ -784,6 +799,8 @@ public void testAMCrashAtAllocated() {
|
||||
ContainerState.COMPLETE, containerDiagMsg, exitCode);
|
||||
applicationAttempt.handle(new RMAppAttemptContainerFinishedEvent(
|
||||
applicationAttempt.getAppAttemptId(), cs));
|
||||
assertEquals(YarnApplicationAttemptState.ALLOCATED,
|
||||
applicationAttempt.createApplicationAttemptState());
|
||||
sendAttemptUpdateSavedEvent(applicationAttempt);
|
||||
assertEquals(RMAppAttemptState.FAILED,
|
||||
applicationAttempt.getAppAttemptState());
|
||||
@ -815,7 +832,8 @@ public void testRunningToFailed() {
|
||||
applicationAttempt.getAppAttemptId(), RMAppAttemptEventType.EXPIRE));
|
||||
assertEquals(RMAppAttemptState.FINAL_SAVING,
|
||||
applicationAttempt.getAppAttemptState());
|
||||
|
||||
assertEquals(YarnApplicationAttemptState.RUNNING,
|
||||
applicationAttempt.createApplicationAttemptState());
|
||||
sendAttemptUpdateSavedEvent(applicationAttempt);
|
||||
assertEquals(RMAppAttemptState.FAILED,
|
||||
applicationAttempt.getAppAttemptState());
|
||||
@ -850,7 +868,8 @@ public void testRunningToKilled() {
|
||||
applicationAttempt.getAppAttemptId(), RMAppAttemptEventType.EXPIRE));
|
||||
assertEquals(RMAppAttemptState.FINAL_SAVING,
|
||||
applicationAttempt.getAppAttemptState());
|
||||
|
||||
assertEquals(YarnApplicationAttemptState.RUNNING,
|
||||
applicationAttempt.createApplicationAttemptState());
|
||||
sendAttemptUpdateSavedEvent(applicationAttempt);
|
||||
assertEquals(RMAppAttemptState.KILLED,
|
||||
applicationAttempt.getAppAttemptState());
|
||||
@ -871,6 +890,8 @@ public void testLaunchedExpire() {
|
||||
launchApplicationAttempt(amContainer);
|
||||
applicationAttempt.handle(new RMAppAttemptEvent(
|
||||
applicationAttempt.getAppAttemptId(), RMAppAttemptEventType.EXPIRE));
|
||||
assertEquals(YarnApplicationAttemptState.LAUNCHED,
|
||||
applicationAttempt.createApplicationAttemptState());
|
||||
sendAttemptUpdateSavedEvent(applicationAttempt);
|
||||
assertEquals(RMAppAttemptState.FAILED,
|
||||
applicationAttempt.getAppAttemptState());
|
||||
@ -890,6 +911,8 @@ public void testRunningExpire() {
|
||||
runApplicationAttempt(amContainer, "host", 8042, "oldtrackingurl", false);
|
||||
applicationAttempt.handle(new RMAppAttemptEvent(
|
||||
applicationAttempt.getAppAttemptId(), RMAppAttemptEventType.EXPIRE));
|
||||
assertEquals(YarnApplicationAttemptState.RUNNING,
|
||||
applicationAttempt.createApplicationAttemptState());
|
||||
sendAttemptUpdateSavedEvent(applicationAttempt);
|
||||
assertEquals(RMAppAttemptState.FAILED,
|
||||
applicationAttempt.getAppAttemptState());
|
||||
@ -1055,6 +1078,8 @@ public void testSuccessfulFinishingToFinished() {
|
||||
diagnostics));
|
||||
assertEquals(RMAppAttemptState.FINAL_SAVING,
|
||||
applicationAttempt.getAppAttemptState());
|
||||
assertEquals(YarnApplicationAttemptState.RUNNING,
|
||||
applicationAttempt.createApplicationAttemptState());
|
||||
// Container_finished event comes before Attempt_Saved event.
|
||||
applicationAttempt.handle(new RMAppAttemptContainerFinishedEvent(
|
||||
applicationAttempt.getAppAttemptId(), BuilderUtils.newContainerStatus(
|
||||
@ -1083,6 +1108,8 @@ public void testFinalSavingToFinishedWithExpire() {
|
||||
diagnostics));
|
||||
assertEquals(RMAppAttemptState.FINAL_SAVING,
|
||||
applicationAttempt.getAppAttemptState());
|
||||
assertEquals(YarnApplicationAttemptState.RUNNING,
|
||||
applicationAttempt.createApplicationAttemptState());
|
||||
// Expire event comes before Attempt_saved event.
|
||||
applicationAttempt.handle(new RMAppAttemptEvent(applicationAttempt
|
||||
.getAppAttemptId(), RMAppAttemptEventType.EXPIRE));
|
||||
@ -1118,6 +1145,8 @@ public void testGetClientToken() throws Exception {
|
||||
|
||||
applicationAttempt.handle(new RMAppAttemptEvent(applicationAttempt
|
||||
.getAppAttemptId(), RMAppAttemptEventType.KILL));
|
||||
assertEquals(YarnApplicationAttemptState.LAUNCHED,
|
||||
applicationAttempt.createApplicationAttemptState());
|
||||
sendAttemptUpdateSavedEvent(applicationAttempt);
|
||||
// after attempt is killed, can not get Client Token
|
||||
token = applicationAttempt.createClientToken(null);
|
||||
@ -1140,6 +1169,8 @@ public void testFailedToFailed() {
|
||||
ApplicationAttemptId appAttemptId = applicationAttempt.getAppAttemptId();
|
||||
applicationAttempt.handle(new RMAppAttemptContainerFinishedEvent(
|
||||
appAttemptId, cs1));
|
||||
assertEquals(YarnApplicationAttemptState.RUNNING,
|
||||
applicationAttempt.createApplicationAttemptState());
|
||||
sendAttemptUpdateSavedEvent(applicationAttempt);
|
||||
assertEquals(RMAppAttemptState.FAILED,
|
||||
applicationAttempt.getAppAttemptState());
|
||||
@ -1178,6 +1209,8 @@ scheduler, masterService, submissionContext, new Configuration(),
|
||||
ApplicationAttemptId appAttemptId = applicationAttempt.getAppAttemptId();
|
||||
applicationAttempt.handle(new RMAppAttemptContainerFinishedEvent(
|
||||
appAttemptId, cs1));
|
||||
assertEquals(YarnApplicationAttemptState.RUNNING,
|
||||
applicationAttempt.createApplicationAttemptState());
|
||||
sendAttemptUpdateSavedEvent(applicationAttempt);
|
||||
assertEquals(RMAppAttemptState.FAILED,
|
||||
applicationAttempt.getAppAttemptState());
|
||||
|
Loading…
Reference in New Issue
Block a user