diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/DecayRpcScheduler.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/DecayRpcScheduler.java index b39bda26c58..3443d0394ad 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/DecayRpcScheduler.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/DecayRpcScheduler.java @@ -206,11 +206,6 @@ public class DecayRpcScheduler implements RpcScheduler, this.backOffResponseTimeThresholds = parseBackOffResponseTimeThreshold(ns, conf, numLevels); - // Setup delay timer - Timer timer = new Timer(); - DecayTask task = new DecayTask(this, timer); - timer.scheduleAtFixedRate(task, decayPeriodMillis, decayPeriodMillis); - // Setup response time metrics responseTimeTotalInCurrWindow = new AtomicLongArray(numLevels); responseTimeCountInCurrWindow = new AtomicLongArray(numLevels); @@ -223,6 +218,11 @@ public class DecayRpcScheduler implements RpcScheduler, Preconditions.checkArgument(topUsersCount > 0, "the number of top users for scheduler metrics must be at least 1"); + // Setup delay timer + Timer timer = new Timer(); + DecayTask task = new DecayTask(this, timer); + timer.scheduleAtFixedRate(task, decayPeriodMillis, decayPeriodMillis); + MetricsProxy prox = MetricsProxy.getInstance(ns, numLevels); prox.setDelegate(this); prox.registerMetrics2Source(ns); @@ -821,9 +821,10 @@ public class DecayRpcScheduler implements RpcScheduler, final int topCallerCount = 10; TopN topNCallers = getTopCallers(topCallerCount); Map decisions = scheduleCacheRef.get(); - for (int i=0; i < topNCallers.size(); i++) { + final int actualCallerCount = topNCallers.size(); + for (int i = 0; i < actualCallerCount; i++) { NameValuePair entry = topNCallers.poll(); - String topCaller = "Top." + (topCallerCount - i) + "." + + String topCaller = "Top." + (actualCallerCount - i) + "." + "Caller(" + entry.getName() + ")"; String topCallerVolume = topCaller + ".Volume"; String topCallerPriority = topCaller + ".Priority";