You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-commits@hadoop.apache.org by to...@apache.org on 2012/05/07 21:07:29 UTC
svn commit: r1335198 - in
/hadoop/common/branches/branch-2/hadoop-mapreduce-project: ./
hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/counters/
hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/te...
Author: tomwhite
Date: Mon May 7 19:07:29 2012
New Revision: 1335198
URL: http://svn.apache.org/viewvc?rev=1335198&view=rev
Log:
Merge -r 1335196:1335197 from trunk to branch-2. Fixes: MAPREDUCE-4226
Modified:
hadoop/common/branches/branch-2/hadoop-mapreduce-project/CHANGES.txt
hadoop/common/branches/branch-2/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/counters/FileSystemCounterGroup.java
hadoop/common/branches/branch-2/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapred/TestCounters.java
Modified: hadoop/common/branches/branch-2/hadoop-mapreduce-project/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-mapreduce-project/CHANGES.txt?rev=1335198&r1=1335197&r2=1335198&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-mapreduce-project/CHANGES.txt (original)
+++ hadoop/common/branches/branch-2/hadoop-mapreduce-project/CHANGES.txt Mon May 7 19:07:29 2012
@@ -352,6 +352,9 @@ Release 0.23.3 - UNRELEASED
MAPREDUCE-4220. RM apps page starttime/endtime sorts are incorrect
(Jonathan Eagles via bobby)
+ MAPREDUCE-4226. ConcurrentModificationException in FileSystemCounterGroup.
+ (tomwhite)
+
Release 0.23.2 - UNRELEASED
INCOMPATIBLE CHANGES
Modified: hadoop/common/branches/branch-2/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/counters/FileSystemCounterGroup.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/counters/FileSystemCounterGroup.java?rev=1335198&r1=1335197&r2=1335198&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/counters/FileSystemCounterGroup.java (original)
+++ hadoop/common/branches/branch-2/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/counters/FileSystemCounterGroup.java Mon May 7 19:07:29 2012
@@ -23,6 +23,7 @@ import java.io.DataOutput;
import java.io.IOException;
import java.util.Arrays;
import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.ConcurrentSkipListMap;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
@@ -54,7 +55,8 @@ public abstract class FileSystemCounterG
// C[] would need Array.newInstance which requires a Class<C> reference.
// Just a few local casts probably worth not having to carry it around.
- private final Map<String, Object[]> map = Maps.newTreeMap();
+ private final Map<String, Object[]> map =
+ new ConcurrentSkipListMap<String, Object[]>();
private String displayName;
private static final Joiner NAME_JOINER = Joiner.on('_');
Modified: hadoop/common/branches/branch-2/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapred/TestCounters.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapred/TestCounters.java?rev=1335198&r1=1335197&r2=1335198&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapred/TestCounters.java (original)
+++ hadoop/common/branches/branch-2/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapred/TestCounters.java Mon May 7 19:07:29 2012
@@ -18,6 +18,7 @@
package org.apache.hadoop.mapred;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.text.ParseException;
@@ -203,6 +204,25 @@ public class TestCounters {
counters.incrCounter("group1", "counter2", 1);
iterator.next();
}
+
+ @Test
+ public void testFileSystemGroupIteratorConcurrency() {
+ Counters counters = new Counters();
+ // create 2 filesystem counter groups
+ counters.findCounter("fs1", FileSystemCounter.BYTES_READ).increment(1);
+ counters.findCounter("fs2", FileSystemCounter.BYTES_READ).increment(1);
+
+ // Iterate over the counters in this group while updating counters in
+ // the group
+ Group group = counters.getGroup(FileSystemCounter.class.getName());
+ Iterator<Counter> iterator = group.iterator();
+ counters.findCounter("fs3", FileSystemCounter.BYTES_READ).increment(1);
+ assertTrue(iterator.hasNext());
+ iterator.next();
+ counters.findCounter("fs3", FileSystemCounter.BYTES_READ).increment(1);
+ assertTrue(iterator.hasNext());
+ iterator.next();
+ }
public static void main(String[] args) throws IOException {
new TestCounters().testCounters();