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:"