You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ji...@apache.org on 2013/12/20 23:06:49 UTC
svn commit: r1552820 - in
/hadoop/common/trunk/hadoop-common-project/hadoop-common: CHANGES.txt
src/main/java/org/apache/hadoop/metrics2/source/JvmMetrics.java
Author: jing9
Date: Fri Dec 20 22:06:48 2013
New Revision: 1552820
URL: http://svn.apache.org/r1552820
Log:
HADOOP-10169. Remove the unnecessary synchronized in JvmMetrics class. Contributed by Liang Xie.
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/source/JvmMetrics.java
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1552820&r1=1552819&r2=1552820&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt (original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt Fri Dec 20 22:06:48 2013
@@ -404,6 +404,9 @@ Release 2.4.0 - UNRELEASED
HADOOP-10164. Allow UGI to login with a known Subject (bobby)
+ HADOOP-10169. Remove the unnecessary synchronized in JvmMetrics class.
+ (Liang Xie via jing9)
+
OPTIMIZATIONS
HADOOP-9748. Reduce blocking on UGI.ensureInitialized (daryn)
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/source/JvmMetrics.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/source/JvmMetrics.java?rev=1552820&r1=1552819&r2=1552820&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/source/JvmMetrics.java (original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/source/JvmMetrics.java Fri Dec 20 22:06:48 2013
@@ -24,10 +24,8 @@ import java.lang.management.MemoryUsage;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
import java.lang.management.GarbageCollectorMXBean;
-import java.util.Map;
import java.util.List;
-
-import com.google.common.collect.Maps;
+import java.util.concurrent.ConcurrentHashMap;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.log.metrics.EventCounter;
@@ -67,7 +65,8 @@ public class JvmMetrics implements Metri
ManagementFactory.getGarbageCollectorMXBeans();
final ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
final String processName, sessionId;
- final Map<String, MetricsInfo[]> gcInfoCache = Maps.newHashMap();
+ final ConcurrentHashMap<String, MetricsInfo[]> gcInfoCache =
+ new ConcurrentHashMap<String, MetricsInfo[]>();
JvmMetrics(String processName, String sessionId) {
this.processName = processName;
@@ -123,13 +122,17 @@ public class JvmMetrics implements Metri
.addCounter(GcTimeMillis, timeMillis);
}
- private synchronized MetricsInfo[] getGcInfo(String gcName) {
+ private MetricsInfo[] getGcInfo(String gcName) {
MetricsInfo[] gcInfo = gcInfoCache.get(gcName);
if (gcInfo == null) {
gcInfo = new MetricsInfo[2];
- gcInfo[0] = Interns.info("GcCount"+ gcName, "GC Count for "+ gcName);
- gcInfo[1] = Interns.info("GcTimeMillis"+ gcName, "GC Time for "+ gcName);
- gcInfoCache.put(gcName, gcInfo);
+ gcInfo[0] = Interns.info("GcCount" + gcName, "GC Count for " + gcName);
+ gcInfo[1] = Interns
+ .info("GcTimeMillis" + gcName, "GC Time for " + gcName);
+ MetricsInfo[] previousGcInfo = gcInfoCache.putIfAbsent(gcName, gcInfo);
+ if (previousGcInfo != null) {
+ return previousGcInfo;
+ }
}
return gcInfo;
}