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 to...@apache.org on 2007/03/12 22:47:52 UTC

svn commit: r517414 - in /lucene/hadoop/trunk: CHANGES.txt src/java/org/apache/hadoop/metrics/spi/AbstractMetricsContext.java

Author: tomwhite
Date: Mon Mar 12 14:47:51 2007
New Revision: 517414

URL: http://svn.apache.org/viewvc?view=rev&rev=517414
Log:
HADOOP-1112.  Fix a race condition in Hadoop metrics.  Contributed by David Bowen.

Modified:
    lucene/hadoop/trunk/CHANGES.txt
    lucene/hadoop/trunk/src/java/org/apache/hadoop/metrics/spi/AbstractMetricsContext.java

Modified: lucene/hadoop/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/CHANGES.txt?view=diff&rev=517414&r1=517413&r2=517414
==============================================================================
--- lucene/hadoop/trunk/CHANGES.txt (original)
+++ lucene/hadoop/trunk/CHANGES.txt Mon Mar 12 14:47:51 2007
@@ -39,6 +39,10 @@
 11. HADOOP-1092.  Fix a NullPointerException in HeartbeatMonitor
     thread. (Hairong Kuang via tomwhite)
 
+12. HADOOP-1112.  Fix a race condition in Hadoop metrics.
+    (David Bowen via tomwhite)
+
+
 Release 0.12.0 - 2007-03-02
 
  1. HADOOP-975.  Separate stdout and stderr from tasks.

Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/metrics/spi/AbstractMetricsContext.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/metrics/spi/AbstractMetricsContext.java?view=diff&rev=517414&r1=517413&r2=517414
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/metrics/spi/AbstractMetricsContext.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/metrics/spi/AbstractMetricsContext.java Mon Mar 12 14:47:51 2007
@@ -323,7 +323,7 @@
         //Map<String,MetricValue> metricUpdates = record.getMetricTable();
         Map metricUpdates = record.getMetricTable();
         
-        RecordMap recordMap = (RecordMap) bufferedData.get(recordName);
+        RecordMap recordMap = getRecordMap(recordName);
         synchronized (recordMap) {
             MetricMap metricMap = (MetricMap) recordMap.get(tagTable);
             if (metricMap == null) {
@@ -349,6 +349,10 @@
         }
     }
     
+    private synchronized RecordMap getRecordMap(String recordName) {
+        return (RecordMap) bufferedData.get(recordName);
+    }
+    
     /**
      * Adds two numbers, coercing the second to the type of the first.
      *
@@ -382,7 +386,7 @@
         String recordName = record.getRecordName();
         TagMap tagTable = record.getTagTable();
         
-        RecordMap recordMap = (RecordMap) bufferedData.get(recordName);
+        RecordMap recordMap = getRecordMap(recordName);
         synchronized (recordMap) {
             recordMap.remove(tagTable);
         }