Browse Source

svn merge -c 1357776 FIXES: MAPREDUCE-4392. Counters.makeCompactString() changed behavior from 0.20 (Jason Lowe via bobby)

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.23@1357779 13f79535-47bb-0310-9956-ffa450edef68
Robert Joseph Evans 13 years ago
parent
commit
161aeccd31

+ 3 - 0
hadoop-mapreduce-project/CHANGES.txt

@@ -273,6 +273,9 @@ Release 0.23.3 - UNRELEASED
     MAPREDUCE-4031. Prevent a Node Manager hang during shutdown. 
     (Devaraj K via sseth)
 
+    MAPREDUCE-4392. Counters.makeCompactString() changed behavior from 0.20
+    (Jason Lowe via bobby)
+
 Release 0.23.2 - UNRELEASED
 
   INCOMPATIBLE CHANGES

+ 17 - 1
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/Counters.java

@@ -90,7 +90,23 @@ public class Counters
   }
 
   public synchronized String makeCompactString() {
-    return CountersStrings.toEscapedCompactString(this);
+    StringBuilder builder = new StringBuilder();
+    boolean first = true;
+    for(Group group: this){
+      for(Counter counter: group) {
+        if (first) {
+          first = false;
+        } else {
+          builder.append(',');
+        }
+        builder.append(group.getDisplayName());
+        builder.append('.');
+        builder.append(counter.getDisplayName());
+        builder.append(':');
+        builder.append(counter.getCounter());
+      }
+    }
+    return builder.toString();
   }
   
   /**

+ 13 - 0
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/test/java/org/apache/hadoop/mapred/TestCounters.java

@@ -224,6 +224,19 @@ public class TestCounters {
     iterator.next();
   }
   
+  @Test
+  public void testMakeCompactString() {
+    final String GC1 = "group1.counter1:1";
+    final String GC2 = "group2.counter2:3";
+    Counters counters = new Counters();
+    counters.incrCounter("group1", "counter1", 1);
+    assertEquals("group1.counter1:1", counters.makeCompactString());
+    counters.incrCounter("group2", "counter2", 3);
+    String cs = counters.makeCompactString();
+    assertTrue("Bad compact string",
+        cs.equals(GC1 + ',' + GC2) || cs.equals(GC2 + ',' + GC1));
+  }
+
   public static void main(String[] args) throws IOException {
     new TestCounters().testCounters();
   }