YARN-4424. Fix deadlock in RMAppImpl. (Jian he via wangda)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/7e471518 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/7e471518 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/7e471518 Branch: refs/heads/yarn-2877 Commit: 7e4715186d31ac889fba26d453feedcebb11fc70 Parents: c4084d9 Author: Wangda Tan <wan...@apache.org> Authored: Tue Dec 8 14:25:16 2015 -0800 Committer: Wangda Tan <wan...@apache.org> Committed: Tue Dec 8 14:25:16 2015 -0800 ---------------------------------------------------------------------- hadoop-yarn-project/CHANGES.txt | 2 ++ .../server/resourcemanager/rmapp/RMAppImpl.java | 22 +++++++------------- 2 files changed, 10 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/7e471518/hadoop-yarn-project/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index dcd9ec5..c7eae9f 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -2032,6 +2032,8 @@ Release 2.6.3 - UNRELEASED YARN-4348. ZKRMStateStore.syncInternal shouldn't wait for sync completion for avoiding blocking ZK's event thread. (ozawa) + YARN-4424. Fix deadlock in RMAppImpl. (Jian he via wangda) + Release 2.6.2 - 2015-10-28 INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/7e471518/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 8baddee..3a9df67 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 @@ -490,21 +490,15 @@ public class RMAppImpl implements RMApp, Recoverable { @Override public FinalApplicationStatus getFinalApplicationStatus() { - this.readLock.lock(); - try { - // finish state is obtained based on the state machine's current state - // as a fall-back in case the application has not been unregistered - // ( or if the app never unregistered itself ) - // when the report is requested - if (currentAttempt != null - && currentAttempt.getFinalApplicationStatus() != null) { - return currentAttempt.getFinalApplicationStatus(); - } - return - createFinalApplicationStatus(this.stateMachine.getCurrentState()); - } finally { - this.readLock.unlock(); + // finish state is obtained based on the state machine's current state + // as a fall-back in case the application has not been unregistered + // ( or if the app never unregistered itself ) + // when the report is requested + if (currentAttempt != null + && currentAttempt.getFinalApplicationStatus() != null) { + return currentAttempt.getFinalApplicationStatus(); } + return createFinalApplicationStatus(this.stateMachine.getCurrentState()); } @Override