Repository: hadoop Updated Branches: refs/heads/branch-2 a0305ba3f -> 5a43b795b
YARN-2594. Potential deadlock in RM when querying ApplicationResourceUsageReport. (Wangda Tan via kasha) (cherry picked from commit 14d60dadc25b044a2887bf912ba5872367f2dffb) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/5a43b795 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/5a43b795 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/5a43b795 Branch: refs/heads/branch-2 Commit: 5a43b795b77cf49e27c3c662a9b195ffb1a3e74d Parents: a0305ba Author: Karthik Kambatla <ka...@apache.org> Authored: Tue Sep 30 16:12:27 2014 -0700 Committer: Karthik Kambatla <ka...@apache.org> Committed: Tue Sep 30 16:17:38 2014 -0700 ---------------------------------------------------------------------- hadoop-yarn-project/CHANGES.txt | 3 ++ .../server/resourcemanager/rmapp/RMAppImpl.java | 50 ++++++-------------- 2 files changed, 18 insertions(+), 35 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/5a43b795/hadoop-yarn-project/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 017ce10..c6ab2ea 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -458,6 +458,9 @@ Release 2.6.0 - UNRELEASED YARN-2387. Resource Manager crashes with NPE due to lack of synchronization (Mit Desai via jlowe) + YARN-2594. Potential deadlock in RM when querying + ApplicationResourceUsageReport. (Wangda Tan via kasha) + Release 2.5.1 - 2014-09-05 INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/5a43b795/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java index eaef7d2..4899434 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java @@ -128,7 +128,8 @@ public class RMAppImpl implements RMApp, Recoverable { private long startTime; private long finishTime = 0; private long storedFinishTime = 0; - private RMAppAttempt currentAttempt; + // This field isn't protected by readlock now. + private volatile RMAppAttempt currentAttempt; private String queue; private EventHandler handler; private static final AppFinishedTransition FINISHED_TRANSITION = @@ -438,16 +439,11 @@ public class RMAppImpl implements RMApp, Recoverable { @Override public float getProgress() { - this.readLock.lock(); - - try { - if (this.currentAttempt != null) { - return this.currentAttempt.getProgress(); - } - return 0; - } finally { - this.readLock.unlock(); + RMAppAttempt attempt = this.currentAttempt; + if (attempt != null) { + return attempt.getProgress(); } + return 0; } @Override @@ -478,13 +474,7 @@ public class RMAppImpl implements RMApp, Recoverable { @Override public RMAppAttempt getCurrentAppAttempt() { - this.readLock.lock(); - - try { - return this.currentAttempt; - } finally { - this.readLock.unlock(); - } + return this.currentAttempt; } @Override @@ -655,30 +645,20 @@ public class RMAppImpl implements RMApp, Recoverable { @Override public String getTrackingUrl() { - this.readLock.lock(); - - try { - if (this.currentAttempt != null) { - return this.currentAttempt.getTrackingUrl(); - } - return null; - } finally { - this.readLock.unlock(); + RMAppAttempt attempt = this.currentAttempt; + if (attempt != null) { + return attempt.getTrackingUrl(); } + return null; } @Override public String getOriginalTrackingUrl() { - this.readLock.lock(); - - try { - if (this.currentAttempt != null) { - return this.currentAttempt.getOriginalTrackingUrl(); - } - return null; - } finally { - this.readLock.unlock(); + RMAppAttempt attempt = this.currentAttempt; + if (attempt != null) { + return attempt.getOriginalTrackingUrl(); } + return null; } @Override