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 MAPREDUCE-3910. Fixed a bug in CapacityScheduler LeafQueue which was causing
app-submission to fail. (John George via vinodkv) 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 Release 0.23.1 - 2012-02-17
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

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

View File

@ -107,6 +107,8 @@ public abstract class CounterGroupFactory<C extends Counter,
if (gf != null) return gf.newGroup(name); if (gf != null) return gf.newGroup(name);
if (name.equals(FS_GROUP_NAME)) { if (name.equals(FS_GROUP_NAME)) {
return newFileSystemGroup(); return newFileSystemGroup();
} else if (s2i.get(name) != null) {
return newFrameworkGroup(s2i.get(name));
} }
return newGenericGroup(name, displayName, limits); 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 Enum<?> FRAMEWORK_COUNTER = TaskCounter.CPU_MILLISECONDS;
static final long FRAMEWORK_COUNTER_VALUE = 8; static final long FRAMEWORK_COUNTER_VALUE = 8;
static final String FS_SCHEME = "HDFS"; static final String FS_SCHEME = "HDFS";