MAPREDUCE-3686. Fixed two bugs in Counters because of which web app displays zero counter values for framework counters. Contributed by Bhallamudi Venkata Siva Kamesh.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1293775 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Vinod Kumar Vavilapalli 2012-02-26 08:32:30 +00:00
parent f3cc891148
commit f071323343
4 changed files with 32 additions and 5 deletions

View File

@ -175,6 +175,10 @@ Release 0.23.2 - UNRELEASED
MAPREDUCE-3910. Fixed a bug in CapacityScheduler LeafQueue which was causing
app-submission to fail. (John George via vinodkv)
MAPREDUCE-3686. Fixed two bugs in Counters because of which web app displays
zero counter values for framework counters. (Bhallamudi Venkata Siva Kamesh
via vinodkv)
Release 0.23.1 - 2012-02-17
INCOMPATIBLE CHANGES

View File

@ -326,12 +326,10 @@ public abstract class AbstractCounters<C extends Counter,
*/
public synchronized void incrAllCounters(AbstractCounters<C, G> other) {
for(G right : other) {
G left = groups.get(right.getName());
String groupName = right.getName();
G left = (isFrameworkGroup(groupName) ? fgroups : groups).get(groupName);
if (left == null) {
limits.checkGroups(groups.size() + 1);
left = groupFactory.newGroup(right.getName(), right.getDisplayName(),
limits);
groups.put(right.getName(), left);
left = addGroup(groupName, right.getDisplayName());
}
left.incrAllCounters(right);
}

View File

@ -107,6 +107,8 @@ public abstract class CounterGroupFactory<C extends Counter,
if (gf != null) return gf.newGroup(name);
if (name.equals(FS_GROUP_NAME)) {
return newFileSystemGroup();
} else if (s2i.get(name) != null) {
return newFrameworkGroup(s2i.get(name));
}
return newGenericGroup(name, displayName, limits);
}

View File

@ -71,6 +71,29 @@ public class TestCounters {
}
}
@Test
public void testCountersIncrement() {
Counters fCounters = new Counters();
Counter fCounter = fCounters.findCounter(FRAMEWORK_COUNTER);
fCounter.setValue(100);
Counter gCounter = fCounters.findCounter("test", "foo");
gCounter.setValue(200);
Counters counters = new Counters();
counters.incrAllCounters(fCounters);
Counter counter;
for (CounterGroup cg : fCounters) {
CounterGroup group = counters.getGroup(cg.getName());
if (group.getName().equals("test")) {
counter = counters.findCounter("test", "foo");
assertEquals(200, counter.getValue());
} else {
counter = counters.findCounter(FRAMEWORK_COUNTER);
assertEquals(100, counter.getValue());
}
}
}
static final Enum<?> FRAMEWORK_COUNTER = TaskCounter.CPU_MILLISECONDS;
static final long FRAMEWORK_COUNTER_VALUE = 8;
static final String FS_SCHEME = "HDFS";