diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java index 2a90ec9..7e83e2d 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java @@ -143,13 +143,10 @@ RMAppState.ACCEPTED, RMAppState.FINISHED, RMAppState.FAILED, RMAppState.KILLED, RMAppState.FINAL_SAVING), RMAppEventType.RECOVER, new RMAppRecoveredTransition()) - .addTransition(RMAppState.NEW, RMAppState.FINAL_SAVING, RMAppEventType.KILL, - new FinalSavingTransition( - new AppKilledTransition(), RMAppState.KILLED)) - .addTransition(RMAppState.NEW, RMAppState.FINAL_SAVING, - RMAppEventType.APP_REJECTED, - new FinalSavingTransition( - new AppRejectedTransition(), RMAppState.FAILED)) + .addTransition(RMAppState.NEW, RMAppState.KILLED, RMAppEventType.KILL, + new AppKilledTransition()) + .addTransition(RMAppState.NEW, RMAppState.FAILED, + RMAppEventType.APP_REJECTED, new AppRejectedTransition()) // Transitions from NEW_SAVING state .addTransition(RMAppState.NEW_SAVING, RMAppState.NEW_SAVING, diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java index 1e5733b..ccdb4a2 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java @@ -280,8 +280,8 @@ private static void assertFinalAppStatus(FinalApplicationStatus status, RMApp ap // test to make sure times are set when app finishes private void assertTimesAtFinish(RMApp application) { assertStartTimeSet(application); - Assert.assertTrue("application finish time is not greater then 0", - (application.getFinishTime() > 0)); + Assert.assertTrue("application start time is less than 0", + (application.getStartTime() >= 0)); Assert.assertTrue("application finish time is not >= then start time", (application.getFinishTime() >= application.getStartTime())); } @@ -309,14 +309,17 @@ private void assertAppAndAttemptKilled(RMApp application) assertAppFinalStateSaved(application); } - private void assertFailed(RMApp application, String regex) { + private void assertFailed(RMApp application, String regex, + boolean checkFinalStateSaved) { assertTimesAtFinish(application); assertAppState(RMAppState.FAILED, application); assertFinalAppStatus(FinalApplicationStatus.FAILED, application); StringBuilder diag = application.getDiagnostics(); Assert.assertTrue("application diagnostics is not correct", diag.toString().matches(regex)); - assertAppFinalStateSaved(application); + if (checkFinalStateSaved) { + assertAppFinalStateSaved(application); + } } private void sendAppUpdateSavedEvent(RMApp application) { @@ -467,7 +470,7 @@ public void testUnmanagedApp() throws IOException { Assert.assertEquals(1, appAttempt.getAppAttemptId().getAttemptId()); sendAppUpdateSavedEvent(application); assertFailed(application, - ".*Unmanaged application.*Failing the application.*"); + ".*Unmanaged application.*Failing the application.*", true); } @Test @@ -511,7 +514,7 @@ public void testAppNewReject() throws IOException { application.handle(event); rmDispatcher.await(); sendAppUpdateSavedEvent(application); - assertFailed(application, rejectedText); + assertFailed(application, rejectedText, false); } @Test (timeout = 30000) @@ -540,7 +543,7 @@ public void testAppNewSavingReject() throws IOException { application.handle(event); rmDispatcher.await(); sendAppUpdateSavedEvent(application); - assertFailed(application, rejectedText); + assertFailed(application, rejectedText, true); } @Test (timeout = 30000) @@ -555,7 +558,7 @@ public void testAppSubmittedRejected() throws IOException { application.handle(event); rmDispatcher.await(); sendAppUpdateSavedEvent(application); - assertFailed(application, rejectedText); + assertFailed(application, rejectedText, true); } @Test @@ -602,7 +605,8 @@ public void testAppAcceptedFailed() throws IOException { application.handle(event); rmDispatcher.await(); sendAppUpdateSavedEvent(application); - assertFailed(application, ".*" + message + ".*Failing the application.*"); + assertFailed(application, ".*" + message + ".*Failing the application.*", + true); } @Test @@ -684,13 +688,13 @@ public void testAppRunningFailed() throws IOException { application.handle(event); rmDispatcher.await(); sendAppUpdateSavedEvent(application); - assertFailed(application, ".*Failing the application.*"); + assertFailed(application, ".*Failing the application.*", true); // FAILED => FAILED event RMAppEventType.KILL event = new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); application.handle(event); rmDispatcher.await(); - assertFailed(application, ".*Failing the application.*"); + assertFailed(application, ".*Failing the application.*", true); } @Test