From a56ea0100215ecf2e1471a18812b668658197239 Mon Sep 17 00:00:00 2001 From: Jason Lowe Date: Mon, 13 Oct 2014 18:31:16 +0000 Subject: [PATCH] YARN-2377. Localization exception stack traces are not passed as diagnostic info. Contributed by Gera Shegalov --- hadoop-yarn-project/CHANGES.txt | 3 +++ .../yarn/api/records/SerializedException.java | 18 ++++++++++++++++++ .../localizer/ResourceLocalizationService.java | 6 +++--- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 782cd13329..03b3505957 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -633,6 +633,9 @@ Release 2.6.0 - UNRELEASED YARN-2651. Spun off LogRollingInterval from LogAggregationContext. (Xuan Gong via zjshen) + YARN-2377. Localization exception stack traces are not passed as + diagnostic info (Gera Shegalov via jlowe) + Release 2.5.1 - 2014-09-05 INCOMPATIBLE CHANGES diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/SerializedException.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/SerializedException.java index aba54d4114..9355a234eb 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/SerializedException.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/SerializedException.java @@ -90,4 +90,22 @@ public static SerializedException newInstance(Throwable e) { @Private @Unstable public abstract Throwable deSerialize(); + + private void stringify(StringBuilder sb) { + sb.append(getMessage()) + .append("\n") + .append(getRemoteTrace()); + final SerializedException cause = getCause(); + if (cause != null) { + sb.append("Caused by: "); + cause.stringify(sb); + } + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder(128); + stringify(sb); + return sb.toString(); + } } \ No newline at end of file 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/localizer/ResourceLocalizationService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/ResourceLocalizationService.java index c2dcebff71..d3b33e8b28 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/ResourceLocalizationService.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/ResourceLocalizationService.java @@ -1008,12 +1008,12 @@ LocalizerHeartbeatResponse update( response.setLocalizerAction(LocalizerAction.LIVE); break; case FETCH_FAILURE: - LOG.info("DEBUG: FAILED " + req - + ", " + stat.getException().getMessage()); + final String diagnostics = stat.getException().toString(); + LOG.warn(req + " failed: " + diagnostics); response.setLocalizerAction(LocalizerAction.DIE); getLocalResourcesTracker(req.getVisibility(), user, applicationId) .handle(new ResourceFailedLocalizationEvent( - req, stat.getException().getMessage())); + req, diagnostics)); // unlocking the resource and removing it from scheduled resource // list