This is an automated email from the ASF dual-hosted git repository.
ayegorov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/master by this push:
new 9aad0453f0 FastTimer to return rates if queried at the same second as
update (#4152)
9aad0453f0 is described below
commit 9aad0453f0f17f45ea673e82fb63762156315e8b
Author: Andrey Yegorov <[email protected]>
AuthorDate: Wed Dec 13 08:37:09 2023 -0800
FastTimer to return rates if queried at the same second as update (#4152)
---
.../java/org/apache/bookkeeper/stats/codahale/FastTimer.java | 5 +++--
.../org/apache/bookkeeper/stats/codahale/FastTimerTest.java | 12 ++++++++++++
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git
a/stats/bookkeeper-stats-providers/codahale-metrics-provider/src/main/java/org/apache/bookkeeper/stats/codahale/FastTimer.java
b/stats/bookkeeper-stats-providers/codahale-metrics-provider/src/main/java/org/apache/bookkeeper/stats/codahale/FastTimer.java
index 2333df2f3f..12e070d881 100644
---
a/stats/bookkeeper-stats-providers/codahale-metrics-provider/src/main/java/org/apache/bookkeeper/stats/codahale/FastTimer.java
+++
b/stats/bookkeeper-stats-providers/codahale-metrics-provider/src/main/java/org/apache/bookkeeper/stats/codahale/FastTimer.java
@@ -477,8 +477,9 @@ public class FastTimer extends Timer {
*/
public double getRate(int seconds) {
seconds = Math.min(seconds, timeWindow - 2);
- int t = getNow(getHash()) - 1; // start from last completed second
- int secFrom = t - seconds;
+ int t = getNow(getHash());
+ // start from last completed second
+ int secFrom = t - seconds - 1;
long sum = 0;
for (int h = 0; h < HASH_SIZE; h++) {
for (int i = t; i > secFrom; i--) {
diff --git
a/stats/bookkeeper-stats-providers/codahale-metrics-provider/src/test/java/org/apache/bookkeeper/stats/codahale/FastTimerTest.java
b/stats/bookkeeper-stats-providers/codahale-metrics-provider/src/test/java/org/apache/bookkeeper/stats/codahale/FastTimerTest.java
index bc95dff074..0e900652cd 100644
---
a/stats/bookkeeper-stats-providers/codahale-metrics-provider/src/test/java/org/apache/bookkeeper/stats/codahale/FastTimerTest.java
+++
b/stats/bookkeeper-stats-providers/codahale-metrics-provider/src/test/java/org/apache/bookkeeper/stats/codahale/FastTimerTest.java
@@ -17,6 +17,7 @@
package org.apache.bookkeeper.stats.codahale;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import com.codahale.metrics.Snapshot;
import java.util.ArrayList;
@@ -52,6 +53,17 @@ public class FastTimerTest {
};
}
+ @Test
+ public void testMeanRate() {
+ FastTimer t = getMockedFastTimer(1, FastTimer.Buckets.fine);
+
+ t.update(10, TimeUnit.NANOSECONDS);
+ assertTrue("should calculate mean before advancing time",
t.getMeanRate() > 0);
+
+ incSec();
+ assertTrue("should calculate mean after advancing time",
t.getMeanRate() > 0);
+ }
+
@Test
public void testBuckets() {
FastTimer t = new FastTimer(1, FastTimer.Buckets.fine);