diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java index bfd94e9..f15f6c6 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java @@ -1017,6 +1017,14 @@ public class YarnConfiguration extends Configuration { public static final int DEFAULT_NM_CONTAINER_METRICS_UNREGISTER_DELAY_MS = 10000; + /** The number of characters to truncate container diagnostics info. */ + @Private + public static final String NM_CONTAINER_DIAGNOSTICS_TRUNCATE_NUM_CHAR = + NM_PREFIX + "container-diagnostics.truncate-num-char"; + @Private + public static final int DEFAULT_NM_CONTAINER_DIAGNOSTICS_TRUNCATE_NUM_CHAR = + 5000; + /** Prefix for all node manager disk health checker configs. */ private static final String NM_DISK_HEALTH_CHECK_PREFIX = "yarn.nodemanager.disk-health-checker."; diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/container/ContainerImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/container/ContainerImpl.java index f336557..ff772f9 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/container/ContainerImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/container/ContainerImpl.java @@ -511,7 +511,15 @@ public class ContainerImpl implements Container { } private void addDiagnostics(String... diags) { + int truncateNum = daemonConf.getInt( + YarnConfiguration.NM_CONTAINER_DIAGNOSTICS_TRUNCATE_NUM_CHAR, + YarnConfiguration.DEFAULT_NM_CONTAINER_DIAGNOSTICS_TRUNCATE_NUM_CHAR); for (String s : diags) { + // Sometimes the exception message will be very large. + if (s.length() > truncateNum) { + LOG.info("Truncate large diagnostic info, containerId: " + containerId + " diagnostic info: " + s); + s = s.substring(0, truncateNum) + "(truncate the diagnostic info...)"; + } this.diagnostics.append(s); } try {