HADOOP-11361. Fix a race condition in MetricsSourceAdapter.updateJmxCache. Contributed by Brahma Reddy Battula.

This commit is contained in:
Tsuyoshi Ozawa 2015-05-14 10:20:45 +09:00
parent 0e85044e26
commit 4356e8a5ef
2 changed files with 10 additions and 10 deletions

View File

@ -674,6 +674,9 @@ Release 2.8.0 - UNRELEASED
HADOOP-11962. Sasl message with MD5 challenge text shouldn't be LOG out
even in debug level. (Junping Du via wheat9)
HADOOP-11361. Fix a race condition in MetricsSourceAdapter.updateJmxCache.
(Brahma Reddy Battula via ozawa)
Release 2.7.1 - UNRELEASED
INCOMPATIBLE CHANGES

View File

@ -154,31 +154,28 @@ public MBeanInfo getMBeanInfo() {
private void updateJmxCache() {
boolean getAllMetrics = false;
synchronized(this) {
synchronized (this) {
if (Time.now() - jmxCacheTS >= jmxCacheTTL) {
// temporarilly advance the expiry while updating the cache
jmxCacheTS = Time.now() + jmxCacheTTL;
if (lastRecs == null) {
getAllMetrics = true;
}
}
else {
} else {
return;
}
}
if (getAllMetrics) {
MetricsCollectorImpl builder = new MetricsCollectorImpl();
getMetrics(builder, true);
}
if (getAllMetrics) {
MetricsCollectorImpl builder = new MetricsCollectorImpl();
getMetrics(builder, true);
}
synchronized(this) {
updateAttrCache();
if (getAllMetrics) {
updateInfoCache();
}
jmxCacheTS = Time.now();
lastRecs = null; // in case regular interval update is not running
lastRecs = null; // in case regular interval update is not running
}
}