diff --git hadoop-yarn-project/hadoop-yarn/dev-support/findbugs-exclude.xml hadoop-yarn-project/hadoop-yarn/dev-support/findbugs-exclude.xml index 2da958a..e5bbbc5 100644 --- hadoop-yarn-project/hadoop-yarn/dev-support/findbugs-exclude.xml +++ hadoop-yarn-project/hadoop-yarn/dev-support/findbugs-exclude.xml @@ -210,6 +210,12 @@ + + + + + + diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java index 5de407d..7c698ab 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java @@ -18,7 +18,6 @@ package org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity; -import com.google.common.base.Preconditions; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; @@ -56,10 +55,12 @@ import org.apache.hadoop.yarn.server.resourcemanager.RMAuditLogger.AuditConstants; import org.apache.hadoop.yarn.server.resourcemanager.RMContext; import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState; +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.RMAppRejectedEvent; 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; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptEventType; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptState; @@ -92,6 +93,7 @@ import org.apache.hadoop.yarn.util.resource.Resources; import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; @LimitedPrivate("yarn") @Evolving @@ -1074,11 +1076,38 @@ public void preemptContainer(ApplicationAttemptId aid, RMContainer cont) { } } + private void logPreemptedContainer(RMContainer container) { + ApplicationAttemptId attemptId = container.getApplicationAttemptId(); + RMApp app = rmContext.getRMApps().get(attemptId.getApplicationId()); + if (null == app) { + LOG.warn("RMApp of given appId=" + attemptId.getApplicationId() + + " is null"); + return; + } + RMAppAttempt attempt = app.getRMAppAttempt(attemptId); + if (null == attempt) { + LOG.warn("RMAppAttempt of given appAttemptId=" + attemptId + " is null"); + return; + } + ContainerId containerId = container.getContainerId(); + if (attempt.getMasterContainer() != null + && attempt.getMasterContainer().getId().equals(containerId)) { + // container got preempted is a master container + LOG.info(String.format("AM container preempted, " + + "appAttemptId=%s, containerId=%s, resource=%s", attemptId, + containerId, container.getContainer().getResource())); + } else { + // container got preempted is not an AM container + LOG.info(String.format("Non-AM container preempted, appAttemptId=%s, " + + "containerId=%s, resource=%s", attemptId, containerId, container + .getContainer().getResource())); + } + } + @Override public void killContainer(RMContainer cont) { - if(LOG.isDebugEnabled()){ - LOG.debug("KILL_CONTAINER: container" + cont.toString()); - } + logPreemptedContainer(cont); + completedContainer(cont, SchedulerUtils.createPreemptedContainerStatus( cont.getContainerId(),"Container being forcibly preempted:"