YARN-3986. getTransferredContainers in AbstractYarnScheduler should be present in YarnScheduler interface

This commit is contained in:
Rohith Sharma K S 2015-08-21 10:51:11 +05:30
parent b0564c9f3c
commit 22de7c1dca
4 changed files with 16 additions and 3 deletions

View File

@ -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

View File

@ -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<Container> transferredContainers = ((AbstractYarnScheduler) rScheduler)
List<Container> transferredContainers = rScheduler
.getTransferredContainers(applicationAttemptId);
if (!transferredContainers.isEmpty()) {
response.setContainersFromPreviousAttempts(transferredContainers);

View File

@ -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<Container> getTransferredContainers(ApplicationAttemptId appAttemptId);
}

View File

@ -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<NMContainerStatus> containers = createNMContainerStatusForApp(am0);