From 8a5bb46663be7bece756f83e1005821ded337647 Mon Sep 17 00:00:00 2001 From: Shalin Shekhar Mangar Date: Wed, 23 Nov 2016 23:20:48 +0530 Subject: [PATCH] SOLR-8785: Use per-second rates for consistency in all stats outputs (cherry picked from commit f8fa2e9) --- solr/CHANGES.txt | 14 +++++++++----- .../org/apache/solr/util/stats/TimerUtils.java | 12 +++--------- .../test/org/apache/solr/cloud/OverseerTest.java | 6 +++--- .../org/apache/solr/util/stats/TimerUtilsTest.java | 6 +++--- 4 files changed, 18 insertions(+), 20 deletions(-) diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index 3c10127f726..1b1a9eddbc4 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -41,11 +41,15 @@ Upgrade Notes * SOLR-8785: Metrics related classes in org.apache.solr.util.stats have been removed in favor of the dropwizard metrics library. Any custom plugins using these classes should be changed to use - the equivalent classes from the metrics library. As part of these changes, the "totalTime" metric - exposed by Overseer Status API in previous versions has been removed because it is no longer supported - by the metrics library. Also, the metrics "75thPctlRequestTime", "95thPctlRequestTime", "99thPctlRequestTime" - and "999thPctlRequestTime" in Overseer Status API have been renamed to "75thPcRequestTime", "95thPcRequestTime" - and so on for consistency with stats output in other parts of Solr. + the equivalent classes from the metrics library. + As part of this, the following changes were made to the output of Overseer Status API: + * The "totalTime" metric has been removed because it is no longer supported + * The metrics "75thPctlRequestTime", "95thPctlRequestTime", "99thPctlRequestTime" + and "999thPctlRequestTime" in Overseer Status API have been renamed to "75thPcRequestTime", "95thPcRequestTime" + and so on for consistency with stats output in other parts of Solr. + * The metrics "avgRequestsPerMinute", "5minRateRequestsPerMinute" and "15minRateRequestsPerMinute" have been + replaced by corresponding per-second rates viz. "avgRequestsPerSecond", "5minRateRequestsPerSecond" + and "15minRateRequestsPerSecond" for consistency with stats output in other parts of Solr. New Features ---------------------- diff --git a/solr/core/src/java/org/apache/solr/util/stats/TimerUtils.java b/solr/core/src/java/org/apache/solr/util/stats/TimerUtils.java index af65a3abbb3..243c1eec9d8 100644 --- a/solr/core/src/java/org/apache/solr/util/stats/TimerUtils.java +++ b/solr/core/src/java/org/apache/solr/util/stats/TimerUtils.java @@ -27,8 +27,6 @@ import org.apache.solr.common.util.NamedList; */ public class TimerUtils { - private static final double RATE_FACTOR = TimeUnit.MINUTES.toSeconds(1); - /** * Adds metrics from a Timer to a NamedList, using well-known names. * @param lst The NamedList to add the metrics data to @@ -36,9 +34,9 @@ public class TimerUtils { */ public static void addMetrics(NamedList lst, Timer timer) { Snapshot snapshot = timer.getSnapshot(); - lst.add("avgRequestsPerMinute", convertRateToPerMinute(timer.getMeanRate())); - lst.add("5minRateRequestsPerMinute", convertRateToPerMinute(timer.getFiveMinuteRate())); - lst.add("15minRateRequestsPerMinute", convertRateToPerMinute(timer.getFifteenMinuteRate())); + lst.add("avgRequestsPerSecond", timer.getMeanRate()); + lst.add("5minRateRequestsPerSecond", timer.getFiveMinuteRate()); + lst.add("15minRateRequestsPerSecond", timer.getFifteenMinuteRate()); lst.add("avgTimePerRequest", nsToMs(snapshot.getMean())); lst.add("medianRequestTime", nsToMs(snapshot.getMedian())); lst.add("75thPcRequestTime", nsToMs(snapshot.get75thPercentile())); @@ -57,8 +55,4 @@ public class TimerUtils { return ns / TimeUnit.MILLISECONDS.toNanos(1); } - static double convertRateToPerMinute(double rate) { - return rate * RATE_FACTOR; - } - } diff --git a/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java b/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java index 48b53d1c444..dccc2c6b064 100644 --- a/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java @@ -1071,9 +1071,9 @@ public class OverseerTest extends SolrTestCaseJ4 { private void printTimingStats(Timer timer) { Snapshot snapshot = timer.getSnapshot(); - log.info("\t avgRequestsPerMinute: {}", timer.getMeanRate()); - log.info("\t 5minRateRequestsPerMinute: {}", timer.getFiveMinuteRate()); - log.info("\t 15minRateRequestsPerMinute: {}", timer.getFifteenMinuteRate()); + log.info("\t avgRequestsPerSecond: {}", timer.getMeanRate()); + log.info("\t 5minRateRequestsPerSecond: {}", timer.getFiveMinuteRate()); + log.info("\t 15minRateRequestsPerSecond: {}", timer.getFifteenMinuteRate()); log.info("\t avgTimePerRequest: {}", nsToMs(snapshot.getMean())); log.info("\t medianRequestTime: {}", nsToMs(snapshot.getMedian())); log.info("\t 75thPcRequestTime: {}", nsToMs(snapshot.get75thPercentile())); diff --git a/solr/core/src/test/org/apache/solr/util/stats/TimerUtilsTest.java b/solr/core/src/test/org/apache/solr/util/stats/TimerUtilsTest.java index c3881e12538..851f768a82a 100644 --- a/solr/core/src/test/org/apache/solr/util/stats/TimerUtilsTest.java +++ b/solr/core/src/test/org/apache/solr/util/stats/TimerUtilsTest.java @@ -43,9 +43,9 @@ public class TimerUtilsTest extends SolrTestCaseJ4 { assertEquals(lst.size(), 9); final Snapshot snapshot = timer.getSnapshot(); // cannot test avgRequestsPerMinute directly because mean rate changes as time increases! - // assertEquals(lst.get("avgRequestsPerMinute"), TimerUtils.convertRateToPerMinute(timer.getMeanRate())); - assertEquals(lst.get("5minRateRequestsPerMinute"), TimerUtils.convertRateToPerMinute(timer.getFiveMinuteRate())); - assertEquals(lst.get("15minRateRequestsPerMinute"), TimerUtils.convertRateToPerMinute(timer.getFifteenMinuteRate())); + // assertEquals(lst.get("avgRequestsPerSecond"), timer.getMeanRate()); + assertEquals(lst.get("5minRateRequestsPerSecond"), timer.getFiveMinuteRate()); + assertEquals(lst.get("15minRateRequestsPerSecond"), timer.getFifteenMinuteRate()); assertEquals(lst.get("avgTimePerRequest"), TimerUtils.nsToMs(snapshot.getMean())); assertEquals(lst.get("medianRequestTime"), TimerUtils.nsToMs(snapshot.getMedian())); assertEquals(lst.get("75thPcRequestTime"), TimerUtils.nsToMs(snapshot.get75thPercentile()));