From 22de7c1dca1be63d523de833163ae51bfe638a79 Mon Sep 17 00:00:00 2001 From: Rohith Sharma K S Date: Fri, 21 Aug 2015 10:51:11 +0530 Subject: [PATCH] YARN-3986. getTransferredContainers in AbstractYarnScheduler should be present in YarnScheduler interface --- hadoop-yarn-project/CHANGES.txt | 3 +++ .../resourcemanager/ApplicationMasterService.java | 3 +-- .../resourcemanager/scheduler/YarnScheduler.java | 11 +++++++++++ .../resourcemanager/TestWorkPreservingRMRestart.java | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 2518eb5b55..cf7b67fe04 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -786,6 +786,9 @@ Release 2.8.0 - UNRELEASED YARN-4028. AppBlock page key update and diagnostics value null on recovery (Bibin A Chundatt via xgong) + YARN-3986. getTransferredContainers in AbstractYarnScheduler should be present + in YarnScheduler interface instead. (Varun Saxena via rohithsharmaks) + Release 2.7.2 - UNRELEASED INCOMPATIBLE CHANGES diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ApplicationMasterService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ApplicationMasterService.java index ff9b820888..c8b985df51 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ApplicationMasterService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ApplicationMasterService.java @@ -89,7 +89,6 @@ import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.event.RMAppAttemptStatusupdateEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.event.RMAppAttemptUnregistrationEvent; import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNode; -import org.apache.hadoop.yarn.server.resourcemanager.scheduler.AbstractYarnScheduler; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.Allocation; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerNodeReport; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.YarnScheduler; @@ -305,7 +304,7 @@ public RegisterApplicationMasterResponse registerApplicationMaster( // and corresponding NM tokens. if (app.getApplicationSubmissionContext() .getKeepContainersAcrossApplicationAttempts()) { - List transferredContainers = ((AbstractYarnScheduler) rScheduler) + List transferredContainers = rScheduler .getTransferredContainers(applicationAttemptId); if (!transferredContainers.isEmpty()) { response.setContainersFromPreviousAttempts(transferredContainers); 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/YarnScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/YarnScheduler.java index 0fa23e173d..4fd16c06f8 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/YarnScheduler.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/YarnScheduler.java @@ -32,6 +32,7 @@ import org.apache.hadoop.yarn.api.records.ApplicationAttemptId; import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ApplicationResourceUsageReport; +import org.apache.hadoop.yarn.api.records.Container; import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.Priority; @@ -317,4 +318,14 @@ public Priority checkAndGetApplicationPriority(Priority priorityFromContext, */ public void updateApplicationPriority(Priority newPriority, ApplicationId applicationId) throws YarnException; + + /** + * + * Get previous attempts' live containers for work-preserving AM restart. + * + * @param appAttemptId the id of the application attempt + * + * @return list of live containers for the given attempt + */ + List getTransferredContainers(ApplicationAttemptId appAttemptId); } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestWorkPreservingRMRestart.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestWorkPreservingRMRestart.java index b5563355b3..77e98383ce 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestWorkPreservingRMRestart.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestWorkPreservingRMRestart.java @@ -770,7 +770,7 @@ public void testRecoverSchedulerAppAndAttemptSynchronously() throws Exception { am0.getApplicationAttemptId())); // getTransferredContainers should not throw NPE. - ((AbstractYarnScheduler) rm2.getResourceScheduler()) + rm2.getResourceScheduler() .getTransferredContainers(am0.getApplicationAttemptId()); List containers = createNMContainerStatusForApp(am0);