.../server/resourcemanager/ClientRMService.java | 9 +++- .../server/resourcemanager/rmapp/RMAppImpl.java | 15 +++--- .../rmapp/RMAppKilledAttemptEvent.java | 40 ++++++++++++++++ .../rmapp/attempt/RMAppAttemptImpl.java | 5 +- .../scheduler/AbstractYarnScheduler.java | 9 +++- .../hadoop/yarn/server/resourcemanager/TestRM.java | 29 +++++++----- .../TestRMAppLogAggregationStatus.java | 17 +++++-- .../rmapp/TestRMAppTransitions.java | 54 ++++++++++++++-------- 8 files changed, 130 insertions(+), 48 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java index cce0fe5..af14b09 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java @@ -132,8 +132,8 @@ import org.apache.hadoop.yarn.server.resourcemanager.reservation.ReservationSystem; import org.apache.hadoop.yarn.server.resourcemanager.reservation.exceptions.PlanningException; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp; -import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppEventType; +import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppKilledAttemptEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppMoveEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppState; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttempt; @@ -651,13 +651,18 @@ public KillApplicationResponse forceKillApplication( } this.rmContext.getDispatcher().getEventHandler() - .handle(new RMAppEvent(applicationId, RMAppEventType.KILL)); + .handle( + new RMAppKilledAttemptEvent(applicationId, RMAppEventType.KILL, + getAppKilledDiagnostics())); // For UnmanagedAMs, return true so they don't retry return KillApplicationResponse.newInstance( application.getApplicationSubmissionContext().getUnmanagedAM()); } + private static String getAppKilledDiagnostics() { + return "Application killed by user"; + } @Override public GetClusterMetricsResponse getClusterMetrics( GetClusterMetricsRequest request) throws YarnException { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java b/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 2eb74f7..86b4176 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java @@ -1079,7 +1079,7 @@ private void rememberTargetTransitionsAndStoreState(RMAppEvent event, diags = getAppAttemptFailedDiagnostics(failedEvent); break; case ATTEMPT_KILLED: - diags = getAppKilledDiagnostics(); + diags = ((RMAppKilledAttemptEvent) event).getDiagnostics(); break; default: break; @@ -1176,15 +1176,12 @@ public AppKilledTransition() { @Override public void transition(RMAppImpl app, RMAppEvent event) { - app.diagnostics.append(getAppKilledDiagnostics()); + app.diagnostics + .append(((RMAppKilledAttemptEvent) event).getDiagnostics()); super.transition(app, event); }; } - private static String getAppKilledDiagnostics() { - return "Application killed by user."; - } - private static class KillAttemptTransition extends RMAppTransition { @Override public void transition(RMAppImpl app, RMAppEvent event) { @@ -1281,7 +1278,11 @@ public RMAppState transition(RMAppImpl app, RMAppEvent event) { if (initialState.equals(RMAppState.KILLING)) { // If this is not last attempt, app should be killed instead of // launching a new attempt - app.rememberTargetTransitionsAndStoreState(event, + RMAppKilledAttemptEvent killedEvent = + new RMAppKilledAttemptEvent(event.getApplicationId(), + RMAppEventType.ATTEMPT_KILLED, + ((RMAppFailedAttemptEvent) event).getDiagnostics()); + app.rememberTargetTransitionsAndStoreState(killedEvent, new AppKilledTransition(), RMAppState.KILLED, RMAppState.KILLED); return RMAppState.FINAL_SAVING; } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppKilledAttemptEvent.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppKilledAttemptEvent.java new file mode 100644 index 0000000..7d1319c --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppKilledAttemptEvent.java @@ -0,0 +1,40 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.yarn.server.resourcemanager.rmapp; + +import org.apache.hadoop.yarn.api.records.ApplicationId; + +/* + * Represent an application killed event. + * This event needs to be used when the application state is KILLED. + */ +public class RMAppKilledAttemptEvent extends RMAppEvent { + + private final String diagnostics; + + public RMAppKilledAttemptEvent(ApplicationId appId, RMAppEventType event, + String diagnostics) { + super(appId, event); + this.diagnostics = diagnostics; + } + + public String getDiagnostics() { + return this.diagnostics; + } +} diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java index 74a4000..27deb8e 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java @@ -82,6 +82,7 @@ import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppFailedAttemptEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppFinishedAttemptEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppImpl; +import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppKilledAttemptEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.event.RMAppAttemptContainerAllocatedEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.event.RMAppAttemptContainerFinishedEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.event.RMAppAttemptLaunchFailedEvent; @@ -1242,9 +1243,9 @@ public void transition(RMAppAttemptImpl appAttempt, { appAttempt.invalidateAMHostAndPort(); appEvent = - new RMAppFailedAttemptEvent(applicationId, + new RMAppKilledAttemptEvent(applicationId, RMAppEventType.ATTEMPT_KILLED, - "Application killed by user.", false); + "Application killed by user."); } break; case FAILED: diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java index 0b6b8ef..50ba782 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AbstractYarnScheduler.java @@ -53,8 +53,8 @@ import org.apache.hadoop.yarn.server.resourcemanager.RMContext; import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp; -import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppEventType; +import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppKilledAttemptEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppMoveEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttempt; import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainer; @@ -558,10 +558,15 @@ public synchronized void killAllAppsInQueue(String queueName) this.rmContext .getDispatcher() .getEventHandler() - .handle(new RMAppEvent(app.getApplicationId(), RMAppEventType.KILL)); + .handle( + new RMAppKilledAttemptEvent(app.getApplicationId(), + RMAppEventType.KILL, getAppKilledDiagnostics())); } } + private static String getAppKilledDiagnostics() { + return "Application killed during cleanup of expired queue"; + } /** * Process resource update on a node. */ diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRM.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRM.java index 77d8cdf..e6f192a 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRM.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRM.java @@ -66,6 +66,7 @@ import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppEventType; +import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppKilledAttemptEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppState; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttempt; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptEvent; @@ -120,7 +121,7 @@ public void testGetNewAppId() throws Exception { rm.stop(); } - @Test (timeout = 30000) + @Test(timeout = 30000) public void testAppWithNoContainers() throws Exception { Logger rootLogger = LogManager.getRootLogger(); rootLogger.setLevel(Level.DEBUG); @@ -142,7 +143,7 @@ public void testAppWithNoContainers() throws Exception { rm.stop(); } - @Test (timeout = 30000) + @Test(timeout = 30000) public void testAppOnMultiNode() throws Exception { Logger rootLogger = LogManager.getRootLogger(); rootLogger.setLevel(Level.DEBUG); @@ -203,7 +204,7 @@ public void testAppOnMultiNode() throws Exception { // Test even if AM container is allocated with containerId not equal to 1, the // following allocate requests from AM should be able to retrieve the // corresponding NM Token. - @Test (timeout = 20000) + @Test(timeout = 20000) public void testNMTokenSentForNormalContainer() throws Exception { conf.set(YarnConfiguration.RM_SCHEDULER, CapacityScheduler.class.getCanonicalName()); @@ -255,7 +256,7 @@ public void testNMTokenSentForNormalContainer() throws Exception { Assert.assertEquals(nm1.getNodeId(), nodeId); } - @Test (timeout = 40000) + @Test(timeout = 40000) public void testNMToken() throws Exception { MockRM rm = new MockRM(conf); try { @@ -439,7 +440,7 @@ protected void allocateContainersAndValidateNMTokens(MockAM am, } } - @Test (timeout = 300000) + @Test(timeout = 300000) public void testActivatingApplicationAfterAddingNM() throws Exception { MockRM rm1 = new MockRM(conf); @@ -484,7 +485,7 @@ public void testActivatingApplicationAfterAddingNM() throws Exception { // This is to test AM Host and rpc port are invalidated after the am attempt // is killed or failed, so that client doesn't get the wrong information. - @Test (timeout = 80000) + @Test(timeout = 80000) public void testInvalidateAMHostPortWhenAMFailedOrKilled() throws Exception { conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS, 1); MockRM rm1 = new MockRM(conf); @@ -536,7 +537,7 @@ public void testInvalidateAMHostPortWhenAMFailedOrKilled() throws Exception { } } - @Test (timeout = 60000) + @Test(timeout = 60000) public void testInvalidatedAMHostPortOnAMRestart() throws Exception { MockRM rm1 = new MockRM(conf); rm1.start(); @@ -567,7 +568,7 @@ public void testInvalidatedAMHostPortOnAMRestart() throws Exception { * Validate killing an application when it is at accepted state. * @throws Exception exception */ - @Test (timeout = 60000) + @Test(timeout = 60000) public void testApplicationKillAtAcceptedState() throws Exception { final Dispatcher dispatcher = new AsyncDispatcher() { @@ -636,8 +637,8 @@ protected Dispatcher createDispatcher() { // Simulate that appAttempt is killed. rm.getRMContext().getDispatcher().getEventHandler().handle( - new RMAppEvent(application.getApplicationId(), - RMAppEventType.ATTEMPT_KILLED)); + new RMAppKilledAttemptEvent(application.getApplicationId(), + RMAppEventType.ATTEMPT_KILLED, getAppKilledDiagnostics())); rm.waitForState(application.getApplicationId(), RMAppState.KILLED); // test metrics @@ -646,8 +647,12 @@ protected Dispatcher createDispatcher() { Assert.assertEquals(appsSubmitted + 1, metrics.getAppsSubmitted()); } + private static String getAppKilledDiagnostics() { + return "Application killed by user"; + } + // Test Kill an app while the app is finishing in the meanwhile. - @Test (timeout = 30000) + @Test(timeout = 30000) public void testKillFinishingApp() throws Exception{ // this dispatcher ignores RMAppAttemptEventType.KILL event @@ -701,7 +706,7 @@ protected Dispatcher createDispatcher() { } // Test Kill an app while the app is failing - @Test (timeout = 30000) + @Test(timeout = 30000) public void testKillFailingApp() throws Exception{ // this dispatcher ignores RMAppAttemptEventType.KILL event diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/logaggregationstatus/TestRMAppLogAggregationStatus.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/logaggregationstatus/TestRMAppLogAggregationStatus.java index fccfa19..89850a6 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/logaggregationstatus/TestRMAppLogAggregationStatus.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/logaggregationstatus/TestRMAppLogAggregationStatus.java @@ -48,6 +48,7 @@ import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppEventType; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppImpl; +import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppKilledAttemptEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppRunningOnNodeEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppState; import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeImpl; @@ -246,8 +247,10 @@ public void testLogAggregationStatus() throws Exception { } // kill the application - rmApp.handle(new RMAppEvent(appId, RMAppEventType.KILL)); - rmApp.handle(new RMAppEvent(appId, RMAppEventType.ATTEMPT_KILLED)); + rmApp.handle(new RMAppKilledAttemptEvent(appId, RMAppEventType.KILL, + getAppKilledDiagnostics())); + rmApp.handle(new RMAppKilledAttemptEvent(appId, + RMAppEventType.ATTEMPT_KILLED, getAppKilledDiagnostics())); rmApp.handle(new RMAppEvent(appId, RMAppEventType.APP_UPDATE_SAVED)); Assert.assertEquals(RMAppState.KILLED, rmApp.getState()); @@ -389,7 +392,8 @@ public void testGetLogAggregationStatusForAppReport() { Assert.assertEquals(LogAggregationStatus.RUNNING, rmApp.getLogAggregationStatusForAppReport()); - rmApp.handle(new RMAppEvent(rmApp.getApplicationId(), RMAppEventType.KILL)); + rmApp.handle(new RMAppKilledAttemptEvent(rmApp.getApplicationId(), + RMAppEventType.KILL, getAppKilledDiagnostics())); Assert.assertTrue(RMAppImpl.isAppInFinalState(rmApp)); // If at least of one log aggregation status for one NM is TIME_OUT, @@ -463,7 +467,8 @@ public void testGetLogAggregationStatusForAppReport() { Assert.assertEquals(LogAggregationStatus.RUNNING_WITH_FAILURE, rmApp.getLogAggregationStatusForAppReport()); - rmApp.handle(new RMAppEvent(rmApp.getApplicationId(), RMAppEventType.KILL)); + rmApp.handle(new RMAppKilledAttemptEvent(rmApp.getApplicationId(), + RMAppEventType.KILL, getAppKilledDiagnostics())); Assert.assertTrue(RMAppImpl.isAppInFinalState(rmApp)); // If at least of one log aggregation status for one NM is FAILED, // others are either SUCCEEDED or TIME_OUT, and this application is @@ -482,6 +487,10 @@ public void testGetLogAggregationStatusForAppReport() { } + private static String getAppKilledDiagnostics() { + return "Application killed by user"; + } + private RMApp createRMApp(Configuration conf) { ApplicationSubmissionContext submissionContext = ApplicationSubmissionContext.newInstance(appId, "test", "default", diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java b/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 2e64d61..3382157 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/TestRMAppTransitions.java @@ -341,7 +341,7 @@ private void assertKilled(RMApp application) { assertFinalAppStatus(FinalApplicationStatus.KILLED, application); StringBuilder diag = application.getDiagnostics(); Assert.assertEquals("application diagnostics is not correct", - "Application killed by user.", diag.toString()); + getAppKilledDiagnostics(), diag.toString()); } private void assertFailed(RMApp application, String regex) { @@ -550,7 +550,8 @@ public void testAppNewKill() throws IOException { RMApp application = createNewTestApp(null); // NEW => KILLED event RMAppEventType.KILL RMAppEvent event = - new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + new RMAppKilledAttemptEvent(application.getApplicationId(), + RMAppEventType.KILL, getAppKilledDiagnostics()); application.handle(event); rmDispatcher.await(); sendAppUpdateSavedEvent(application); @@ -560,6 +561,9 @@ public void testAppNewKill() throws IOException { verifyAppRemovedSchedulerEvent(RMAppState.KILLED); } + private static String getAppKilledDiagnostics() { + return "Application killed by user."; + } @Test public void testAppNewReject() throws IOException { LOG.info("--- START: testAppNewReject ---"); @@ -602,7 +606,8 @@ public void testAppNewSavingKill() throws IOException { RMApp application = testCreateAppNewSaving(null); // NEW_SAVING => KILLED event RMAppEventType.KILL RMAppEvent event = - new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + new RMAppKilledAttemptEvent(application.getApplicationId(), + RMAppEventType.KILL, getAppKilledDiagnostics()); application.handle(event); rmDispatcher.await(); sendAppUpdateSavedEvent(application); @@ -650,8 +655,9 @@ public void testAppSubmittedKill() throws IOException, InterruptedException { LOG.info("--- START: testAppSubmittedKill---"); RMApp application = testCreateAppSubmittedNoRecovery(null); // SUBMITTED => KILLED event RMAppEventType.KILL - RMAppEvent event = new RMAppEvent(application.getApplicationId(), - RMAppEventType.KILL); + RMAppEvent event = + new RMAppKilledAttemptEvent(application.getApplicationId(), + RMAppEventType.KILL, getAppKilledDiagnostics()); application.handle(event); rmDispatcher.await(); sendAppUpdateSavedEvent(application); @@ -701,15 +707,16 @@ public void testAppAcceptedKill() throws IOException, InterruptedException { LOG.info("--- START: testAppAcceptedKill ---"); RMApp application = testCreateAppAccepted(null); // ACCEPTED => KILLED event RMAppEventType.KILL - RMAppEvent event = new RMAppEvent(application.getApplicationId(), - RMAppEventType.KILL); + RMAppEvent event = + new RMAppKilledAttemptEvent(application.getApplicationId(), + RMAppEventType.KILL, getAppKilledDiagnostics()); application.handle(event); rmDispatcher.await(); assertAppState(RMAppState.KILLING, application); RMAppEvent appAttemptKilled = - new RMAppEvent(application.getApplicationId(), - RMAppEventType.ATTEMPT_KILLED); + new RMAppKilledAttemptEvent(application.getApplicationId(), + RMAppEventType.ATTEMPT_KILLED, getAppKilledDiagnostics()); application.handle(appAttemptKilled); assertAppState(RMAppState.FINAL_SAVING, application); sendAppUpdateSavedEvent(application); @@ -729,8 +736,8 @@ public void testAppAcceptedAttemptKilled() throws IOException, // When application recovery happens for attempt is KILLED but app is // RUNNING. RMAppEvent event = - new RMAppEvent(application.getApplicationId(), - RMAppEventType.ATTEMPT_KILLED); + new RMAppKilledAttemptEvent(application.getApplicationId(), + RMAppEventType.ATTEMPT_KILLED, getAppKilledDiagnostics()); application.handle(event); rmDispatcher.await(); @@ -749,7 +756,8 @@ public void testAppRunningKill() throws IOException { RMApp application = testCreateAppRunning(null); // RUNNING => KILLED event RMAppEventType.KILL RMAppEvent event = - new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + new RMAppKilledAttemptEvent(application.getApplicationId(), + RMAppEventType.KILL, getAppKilledDiagnostics()); application.handle(event); rmDispatcher.await(); @@ -807,7 +815,9 @@ public void testAppRunningFailed() throws IOException { assertAppFinalStateSaved(application); // FAILED => FAILED event RMAppEventType.KILL - event = new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + event = + new RMAppKilledAttemptEvent(application.getApplicationId(), + RMAppEventType.KILL, getAppKilledDiagnostics()); application.handle(event); rmDispatcher.await(); assertFailed(application, ".*Failing the application.*"); @@ -822,7 +832,8 @@ public void testAppAtFinishingIgnoreKill() throws IOException { RMApp application = testCreateAppFinishing(null); // FINISHING => FINISHED event RMAppEventType.KILL RMAppEvent event = - new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + new RMAppKilledAttemptEvent(application.getApplicationId(), + RMAppEventType.KILL, getAppKilledDiagnostics()); application.handle(event); rmDispatcher.await(); assertAppState(RMAppState.FINISHING, application); @@ -862,7 +873,8 @@ public void testAppFinishedFinished() throws IOException { RMApp application = testCreateAppFinished(null, ""); // FINISHED => FINISHED event RMAppEventType.KILL RMAppEvent event = - new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + new RMAppKilledAttemptEvent(application.getApplicationId(), + RMAppEventType.KILL, getAppKilledDiagnostics()); application.handle(event); rmDispatcher.await(); assertTimesAtFinish(application); @@ -890,7 +902,8 @@ public void testAppFailedFailed() throws IOException { // FAILED => FAILED event RMAppEventType.KILL event = - new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + new RMAppKilledAttemptEvent(application.getApplicationId(), + RMAppEventType.KILL, getAppKilledDiagnostics()); application.handle(event); rmDispatcher.await(); assertTimesAtFinish(application); @@ -901,7 +914,7 @@ public void testAppFailedFailed() throws IOException { assertAppState(RMAppState.FAILED, application); } - @Test (timeout = 30000) + @Test(timeout = 30000) public void testAppKilledKilled() throws IOException { LOG.info("--- START: testAppKilledKilled ---"); @@ -909,7 +922,8 @@ public void testAppKilledKilled() throws IOException { // RUNNING => KILLED event RMAppEventType.KILL RMAppEvent event = - new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + new RMAppKilledAttemptEvent(application.getApplicationId(), + RMAppEventType.KILL, getAppKilledDiagnostics()); application.handle(event); rmDispatcher.await(); sendAttemptUpdateSavedEvent(application); @@ -936,7 +950,9 @@ public void testAppKilledKilled() throws IOException { // KILLED => KILLED event RMAppEventType.KILL - event = new RMAppEvent(application.getApplicationId(), RMAppEventType.KILL); + event = + new RMAppKilledAttemptEvent(application.getApplicationId(), + RMAppEventType.KILL, getAppKilledDiagnostics()); application.handle(event); rmDispatcher.await(); assertTimesAtFinish(application);