From 60c95e9b6a899e37ecdc8bce7bb6d9ed0dc7a6be Mon Sep 17 00:00:00 2001 From: bibinchundatt Date: Tue, 11 Jun 2019 23:10:41 +0530 Subject: [PATCH] YARN-9565. RMAppImpl#ranNodes not cleared on FinalTransition. Contributed by Bilwa S T. --- .../hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java | 1 + .../server/resourcemanager/rmapp/TestRMAppTransitions.java | 5 +++++ 2 files changed, 6 insertions(+) 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 ce67f2e8e13..3f9f9c8103d 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 @@ -1522,6 +1522,7 @@ private void completeAndCleanupApp(RMAppImpl app) { app.handler.handle( new RMNodeCleanAppEvent(nodeId, app.applicationId)); } + app.ranNodes.clear(); // Recovered apps that are completed were not added to scheduler, so no // need to remove them from scheduler. if (app.recoveredFinalState == null) { 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 e5d7e3fb637..2e176cc9763 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 @@ -45,6 +45,7 @@ import org.apache.hadoop.yarn.api.records.LocalResourceType; import org.apache.hadoop.yarn.api.records.LocalResourceVisibility; import org.apache.hadoop.yarn.api.records.LogAggregationContext; +import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.Priority; import org.apache.hadoop.yarn.api.records.ResourceRequest; import org.apache.hadoop.yarn.api.records.URL; @@ -569,6 +570,7 @@ protected RMApp testCreateAppSubmittedRecovery( protected RMApp testCreateAppAccepted( ApplicationSubmissionContext submissionContext) throws IOException { RMApp application = testCreateAppSubmittedNoRecovery(submissionContext); + NodeId nodeId = NodeId.newInstance("host", 1234); // SUBMITTED => ACCEPTED event RMAppEventType.APP_ACCEPTED RMAppEvent event = new RMAppEvent(application.getApplicationId(), @@ -576,6 +578,8 @@ protected RMApp testCreateAppAccepted( application.handle(event); assertStartTimeSet(application); assertAppState(RMAppState.ACCEPTED, application); + application.handle( + new RMAppRunningOnNodeEvent(application.getApplicationId(), nodeId)); return application; } @@ -1089,6 +1093,7 @@ public void testAppFinishedFinished() throws Exception { rmDispatcher.await(); assertTimesAtFinish(application); assertAppState(RMAppState.FINISHED, application); + Assert.assertEquals(0, application.getRanNodes().size()); StringBuilder diag = application.getDiagnostics(); Assert.assertEquals("application diagnostics is not correct", "", diag.toString());