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/SchedulerApplicationAttempt.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java index 59fd814..740d6ba 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java @@ -269,7 +269,11 @@ public ContainerUpdateContext getUpdateContext() { public boolean isPending() { return appSchedulingInfo.isPending(); } - + + public RMAppAttempt getRMAppAttempt() { + return this.appAttempt; + } + /** * Get {@link ApplicationAttemptId} of the application master. * @return ApplicationAttemptId of the application master 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/fair/FSAppAttempt.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSAppAttempt.java index 21863b8..a503280 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSAppAttempt.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSAppAttempt.java @@ -669,11 +669,13 @@ public synchronized void recoverContainer(SchedulerNode node, // If not running unmanaged, the first container we recover is always // the AM. Set the amResource for this app and update the leaf queue's AM // usage - if (!isAmRunning() && !getUnmanagedAM()) { - Resource resource = rmContainer.getAllocatedResource(); - setAMResource(resource); - getQueue().addAMResourceUsage(resource); - setAmRunning(true); + if (rmContainer.getContainerId().equals(this.getRMAppAttempt().getMasterContainer().getId())) { + if (!isAmRunning() && !getUnmanagedAM()) { + Resource resource = rmContainer.getAllocatedResource(); + setAMResource(resource); + getQueue().addAMResourceUsage(resource); + setAmRunning(true); + } } } finally { writeLock.unlock();