MAPREDUCE-5905. CountersStrings.toEscapedCompactStrings outputs unnecessary null strings. Contributed by Akira AJISAKA.

This commit is contained in:
Tsuyoshi Ozawa 2015-05-04 15:02:21 +09:00
parent a319771d1d
commit 3ba18362f2
3 changed files with 8 additions and 15 deletions

View File

@ -359,6 +359,9 @@ Release 2.8.0 - UNRELEASED
MAPREDUCE-6345. Documentation fix for when CRLA is enabled for MRAppMaster
logs. (Rohit Agarwal via gera)
MAPREDUCE-5905. CountersStrings.toEscapedCompactStrings outputs
unnecessary "null" strings. (Akira AJISAKA via ozawa)
Release 2.7.1 - UNRELEASED
INCOMPATIBLE CHANGES

View File

@ -151,25 +151,12 @@ public class CountersStrings {
public static <C extends Counter, G extends CounterGroupBase<C>,
T extends AbstractCounters<C, G>>
String toEscapedCompactString(T counters) {
String[] groupsArray;
int length = 0;
StringBuilder builder = new StringBuilder();
synchronized(counters) {
groupsArray = new String[counters.countCounters()];
int i = 0;
// First up, obtain the escaped string for each group so that we can
// determine the buffer length apriori.
for (G group : counters) {
String escapedString = toEscapedCompactString(group);
groupsArray[i++] = escapedString;
length += escapedString.length();
builder.append(toEscapedCompactString(group));
}
}
// Now construct the buffer
StringBuilder builder = new StringBuilder(length);
for (String group : groupsArray) {
builder.append(group);
}
return builder.toString();
}

View File

@ -18,6 +18,7 @@
package org.apache.hadoop.mapred;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
@ -84,6 +85,8 @@ public class TestCounters {
*/
private void testCounter(Counters counter) throws ParseException {
String compactEscapedString = counter.makeEscapedCompactString();
assertFalse("compactEscapedString should not contain null",
compactEscapedString.contains("null"));
Counters recoveredCounter =
Counters.fromEscapedCompactString(compactEscapedString);