Revert "MAPREDUCE-6199. AbstractCounters are not reset completely on deserialization (adhoot via rkanter)"

This reverts commit 390a7c12f5.
This commit is contained in:
Junping Du 2017-07-28 14:21:04 -07:00
parent e15f928295
commit 713349a9af
3 changed files with 1 additions and 49 deletions

View File

@ -307,10 +307,6 @@ public synchronized void readFields(DataInput in) throws IOException {
fgroups.put(group.getName(), group); fgroups.put(group.getName(), group);
} }
int numGroups = WritableUtils.readVInt(in); int numGroups = WritableUtils.readVInt(in);
if (!groups.isEmpty()) {
groups.clear();
limits.reset();
}
while (numGroups-- > 0) { while (numGroups-- > 0) {
limits.checkGroups(groups.size() + 1); limits.checkGroups(groups.size() + 1);
G group = groupFactory.newGenericGroup( G group = groupFactory.newGenericGroup(

View File

@ -124,15 +124,8 @@ public synchronized LimitExceededException violation() {
return firstViolation; return firstViolation;
} }
// This allows initialization of global settings and not for an instance
public static synchronized void reset(Configuration conf) { public static synchronized void reset(Configuration conf) {
isInited = false; isInited = false;
init(conf); init(conf);
} }
// This allows resetting of an instance to allow reuse
public synchronized void reset() {
totalCounters = 0;
firstViolation = null;
}
} }

View File

@ -17,12 +17,8 @@
*/ */
package org.apache.hadoop.mapreduce; package org.apache.hadoop.mapreduce;
import java.io.IOException;
import java.util.Random; import java.util.Random;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.DataInputBuffer;
import org.apache.hadoop.io.DataOutputBuffer;
import org.junit.Test; import org.junit.Test;
import static org.junit.Assert.*; import static org.junit.Assert.*;
@ -74,40 +70,7 @@ public void testCounterValue() {
testMaxGroups(new Counters()); testMaxGroups(new Counters());
} }
} }
@Test public void testResetOnDeserialize() throws IOException {
// Allow only one counterGroup
Configuration conf = new Configuration();
conf.setInt(MRJobConfig.COUNTER_GROUPS_MAX_KEY, 1);
Limits.init(conf);
Counters countersWithOneGroup = new Counters();
countersWithOneGroup.findCounter("firstOf1Allowed", "First group");
boolean caughtExpectedException = false;
try {
countersWithOneGroup.findCounter("secondIsTooMany", "Second group");
}
catch (LimitExceededException _) {
caughtExpectedException = true;
}
assertTrue("Did not throw expected exception",
caughtExpectedException);
Counters countersWithZeroGroups = new Counters();
DataOutputBuffer out = new DataOutputBuffer();
countersWithZeroGroups.write(out);
DataInputBuffer in = new DataInputBuffer();
in.reset(out.getData(), out.getLength());
countersWithOneGroup.readFields(in);
// After reset one should be able to add a group
countersWithOneGroup.findCounter("firstGroupAfterReset", "After reset " +
"limit should be set back to zero");
}
@Test @Test
public void testCountersIncrement() { public void testCountersIncrement() {
Counters fCounters = new Counters(); Counters fCounters = new Counters();