diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/QueueMetrics.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/QueueMetrics.java index 9d2c739..01f7aef 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/QueueMetrics.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/QueueMetrics.java @@ -57,7 +57,7 @@ @Metric("# of pending apps") MutableGaugeInt appsPending; @Metric("# of apps completed") MutableCounterInt appsCompleted; @Metric("# of apps killed") MutableCounterInt appsKilled; - @Metric("# of apps failed") MutableGaugeInt appsFailed; + @Metric("# of apps failed") MutableCounterInt appsFailed; @Metric("Allocated memory in MB") MutableGaugeInt allocatedMB; @Metric("Allocated CPU in virtual cores") MutableGaugeInt allocatedVCores; @@ -217,8 +217,6 @@ public void getMetrics(MetricsCollector collector, boolean all) { public void submitApp(String user, int attemptId) { if (attemptId == 1) { appsSubmitted.incr(); - } else { - appsFailed.decr(); } appsPending.incr(); QueueMetrics userMetrics = getUserMetrics(user); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestQueueMetrics.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestQueueMetrics.java index b3702ad..895fe6b 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestQueueMetrics.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestQueueMetrics.java @@ -113,26 +113,26 @@ public void testQueueAppMetricsForMultipleFailures() { // As the application has failed, framework retries the same application // based on configuration metrics.submitApp(user, 2); - checkApps(queueSource, 1, 1, 0, 0, 0, 0, true); + checkApps(queueSource, 1, 1, 0, 0, 1, 0, true); metrics.incrAppsRunning(app, user); - checkApps(queueSource, 1, 0, 1, 0, 0, 0, true); + checkApps(queueSource, 1, 0, 1, 0, 1, 0, true); // Suppose say application has failed this time as well. metrics.finishApp(app, RMAppAttemptState.FAILED); - checkApps(queueSource, 1, 0, 0, 0, 1, 0, true); + checkApps(queueSource, 1, 0, 0, 0, 2, 0, true); // As the application has failed, framework retries the same application // based on configuration metrics.submitApp(user, 3); - checkApps(queueSource, 1, 1, 0, 0, 0, 0, true); + checkApps(queueSource, 1, 1, 0, 0, 2, 0, true); metrics.incrAppsRunning(app, user); - checkApps(queueSource, 1, 0, 1, 0, 0, 0, true); + checkApps(queueSource, 1, 0, 1, 0, 2, 0, true); // Suppose say application has finished. metrics.finishApp(app, RMAppAttemptState.FINISHED); - checkApps(queueSource, 1, 0, 0, 1, 0, 0, true); + checkApps(queueSource, 1, 0, 0, 1, 2, 0, true); assertNull(userSource); } @@ -308,7 +308,7 @@ public static void checkApps(MetricsSource source, int submitted, int pending, assertGauge("AppsPending", pending, rb); assertGauge("AppsRunning", running, rb); assertCounter("AppsCompleted", completed, rb); - assertGauge("AppsFailed", failed, rb); + assertCounter("AppsFailed", failed, rb); assertCounter("AppsKilled", killed, rb); }