You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2017/09/26 22:26:35 UTC
[36/50] [abbrv] ambari git commit: AMBARI-22044 : Rate metrics should
not have negative values whenever the underlying counter metric has been
reset.(avijayan)
AMBARI-22044 : Rate metrics should not have negative values whenever the underlying counter metric has been reset.(avijayan)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ced70f7d
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ced70f7d
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ced70f7d
Branch: refs/heads/branch-3.0-ams
Commit: ced70f7db01384e11b1a7f52fa0f64924eea0ab8
Parents: 84fed85
Author: Aravindan Vijayan <av...@hortonworks.com>
Authored: Mon Sep 25 22:16:20 2017 -0700
Committer: Aravindan Vijayan <av...@hortonworks.com>
Committed: Mon Sep 25 22:16:20 2017 -0700
----------------------------------------------------------------------
.../timeline/HBaseTimelineMetricStore.java | 8 +++--
.../timeline/HBaseTimelineMetricStoreTest.java | 36 +++++++++++---------
2 files changed, 26 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/ced70f7d/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/HBaseTimelineMetricStore.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/HBaseTimelineMetricStore.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/HBaseTimelineMetricStore.java
index ad1fd67..2342bd8 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/HBaseTimelineMetricStore.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/HBaseTimelineMetricStore.java
@@ -312,8 +312,12 @@ public class HBaseTimelineMetricStore extends AbstractService implements Timelin
if (prevTime != null) {
step = currTime - prevTime;
diff = currVal - prevVal;
- Double rate = isDiff ? diff : (diff / TimeUnit.MILLISECONDS.toSeconds(step));
- timeValueEntry.setValue(rate);
+ if (diff < 0) {
+ it.remove(); //Discard calculating rate when the metric counter has been reset.
+ } else {
+ Double rate = isDiff ? diff : (diff / TimeUnit.MILLISECONDS.toSeconds(step));
+ timeValueEntry.setValue(rate);
+ }
} else {
it.remove();
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/ced70f7d/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/HBaseTimelineMetricStoreTest.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/HBaseTimelineMetricStoreTest.java b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/HBaseTimelineMetricStoreTest.java
index aae1d4b..70dd583 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/HBaseTimelineMetricStoreTest.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/HBaseTimelineMetricStoreTest.java
@@ -95,22 +95,26 @@ public class HBaseTimelineMetricStoreTest {
@Test
public void testRateCalculationOnMetricsWithEqualValues() throws Exception {
Map<Long, Double> metricValues = new TreeMap<>();
- metricValues.put(1454016368371L, 1011.25);
- metricValues.put(1454016428371L, 1011.25);
- metricValues.put(1454016488371L, 1011.25);
- metricValues.put(1454016548371L, 1011.25);
- metricValues.put(1454016608371L, 1011.25);
- metricValues.put(1454016668371L, 1011.25);
- metricValues.put(1454016728371L, 1011.25);
+ metricValues.put(1454000000000L, 1.0);
+ metricValues.put(1454000001000L, 6.0);
+ metricValues.put(1454000002000L, 0.0);
+ metricValues.put(1454000003000L, 3.0);
+ metricValues.put(1454000004000L, 4.0);
+ metricValues.put(1454000005000L, 7.0);
// Calculate rate
Map<Long, Double> rates = HBaseTimelineMetricStore.updateValuesAsRate(new TreeMap<>(metricValues), false);
// Make sure rate is zero
- for (Map.Entry<Long, Double> rateEntry : rates.entrySet()) {
- Assert.assertEquals("Rate should be zero, key = " + rateEntry.getKey()
- + ", value = " + rateEntry.getValue(), 0.0, rateEntry.getValue());
- }
+ Assert.assertTrue(rates.size() == 4);
+
+ Assert.assertFalse(rates.containsKey(1454000000000L));
+ Assert.assertFalse(rates.containsKey(1454000002000L));
+
+ Assert.assertEquals(rates.get(1454000001000L), 5.0);
+ Assert.assertEquals(rates.get(1454000003000L), 3.0);
+ Assert.assertEquals(rates.get(1454000004000L), 1.0);
+ Assert.assertEquals(rates.get(1454000005000L), 3.0);
}
@Test
@@ -119,14 +123,14 @@ public class HBaseTimelineMetricStoreTest {
metricValues.put(1454016368371L, 1011.25);
metricValues.put(1454016428371L, 1010.25);
metricValues.put(1454016488371L, 1012.25);
- metricValues.put(1454016548371L, 1010.25);
- metricValues.put(1454016608371L, 1010.25);
+ metricValues.put(1454016548371L, 1015.25);
+ metricValues.put(1454016608371L, 1020.25);
Map<Long, Double> rates = HBaseTimelineMetricStore.updateValuesAsRate(new TreeMap<>(metricValues), true);
- Assert.assertTrue(rates.size()==4);
- Assert.assertTrue(rates.containsValue(-1.0));
+ Assert.assertTrue(rates.size() == 3);
Assert.assertTrue(rates.containsValue(2.0));
- Assert.assertTrue(rates.containsValue(0.0));
+ Assert.assertTrue(rates.containsValue(3.0));
+ Assert.assertTrue(rates.containsValue(5.0));
}
}