diff --git a/hadoop-yarn-project/hadoop-yarn/dev-support/findbugs-exclude.xml b/hadoop-yarn-project/hadoop-yarn/dev-support/findbugs-exclude.xml
index 2da958a..e5bbbc5 100644
--- a/hadoop-yarn-project/hadoop-yarn/dev-support/findbugs-exclude.xml
+++ b/hadoop-yarn-project/hadoop-yarn/dev-support/findbugs-exclude.xml
@@ -210,6 +210,12 @@
+
+
+
+
+
+
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/capacity/CapacityScheduler.java b/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..c36449e 100644
--- a/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
+++ b/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,41 @@ public void preemptContainer(ApplicationAttemptId aid, RMContainer cont) {
}
}
+ private void logPreemptedContainer(RMContainer cont) {
+ ApplicationAttemptId attemptId = cont.getApplicationAttemptId();
+ RMApp app = rmContext.getRMApps().get(attemptId.getApplicationId());
+ if (null == app) {
+ LOG.warn("RMApp of given appId=" + attemptId.getApplicationId().toString()
+ + " is null");
+ return;
+ }
+ RMAppAttempt attempt = app.getRMAppAttempt(cont.getApplicationAttemptId());
+ if (null == attempt) {
+ LOG.warn("RMAppAttempt of given appAttemptId=" + attemptId.toString()
+ + " is null");
+ return;
+ }
+ ContainerId containerId = cont.getContainerId();
+ if (attempt.getMasterContainer() != null
+ && attempt.getMasterContainer().getId().equals(containerId)) {
+ // container got preempted is a master container
+ LOG.info(String.format("Application Master container preempted, "
+ + "appAttemptId=%s, containerId=%s, resource=%s", attempt
+ .getAppAttemptId().toString(), containerId.toString(), cont
+ .getContainer().getResource().toString()));
+ } else {
+ // container got preempted is a task container
+ LOG.info(String.format("Task container preempted, appAttemptId=%s, "
+ + "containerId=%s, resource=%s",
+ attempt.getAppAttemptId().toString(), containerId.toString(), cont
+ .getContainer().getResource().toString()));
+ }
+ }
+
@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:"