YARN-4424. Fix deadlock in RMAppImpl. (Jian he via wangda)

(cherry picked from commit 7e4715186d)

Conflicts:
	hadoop-yarn-project/CHANGES.txt

(cherry picked from commit 7013f9d6cd)

Conflicts:
	hadoop-yarn-project/CHANGES.txt
This commit is contained in:
Wangda Tan 2015-12-08 14:25:16 -08:00
parent 067d14f503
commit fd18377255
2 changed files with 10 additions and 14 deletions

View File

@ -938,6 +938,8 @@ Release 2.6.3 - UNRELEASED
YARN-4348. ZKRMStateStore.syncInternal shouldn't wait for sync completion for YARN-4348. ZKRMStateStore.syncInternal shouldn't wait for sync completion for
avoiding blocking ZK's event thread. (ozawa) avoiding blocking ZK's event thread. (ozawa)
YARN-4424. Fix deadlock in RMAppImpl. (Jian he via wangda)
Release 2.6.2 - 2015-10-28 Release 2.6.2 - 2015-10-28
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -427,21 +427,15 @@ public class RMAppImpl implements RMApp, Recoverable {
@Override @Override
public FinalApplicationStatus getFinalApplicationStatus() { public FinalApplicationStatus getFinalApplicationStatus() {
this.readLock.lock(); // finish state is obtained based on the state machine's current state
try { // as a fall-back in case the application has not been unregistered
// finish state is obtained based on the state machine's current state // ( or if the app never unregistered itself )
// as a fall-back in case the application has not been unregistered // when the report is requested
// ( or if the app never unregistered itself ) if (currentAttempt != null
// when the report is requested && currentAttempt.getFinalApplicationStatus() != null) {
if (currentAttempt != null return currentAttempt.getFinalApplicationStatus();
&& currentAttempt.getFinalApplicationStatus() != null) {
return currentAttempt.getFinalApplicationStatus();
}
return
createFinalApplicationStatus(this.stateMachine.getCurrentState());
} finally {
this.readLock.unlock();
} }
return createFinalApplicationStatus(this.stateMachine.getCurrentState());
} }
@Override @Override