YARN-2594. Potential deadlock in RM when querying ApplicationResourceUsageReport. (Wangda Tan via kasha)
(cherry picked from commit 14d60dadc2
)
This commit is contained in:
parent
a0305ba3fc
commit
5a43b795b7
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue