This is an automated email from the ASF dual-hosted git repository.
konstantinov pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/trunk by this push:
new 241f478ce6 Fix flaky ThreadLocalMeterTest by disabling background
triggering of ThreadLocalMeter#tickAll within the test case
241f478ce6 is described below
commit 241f478ce66ca38f32536b91e822c1173752eed8
Author: Dmitry Konstantinov <[email protected]>
AuthorDate: Wed Dec 3 10:52:28 2025 +0000
Fix flaky ThreadLocalMeterTest by disabling background triggering of
ThreadLocalMeter#tickAll within the test case
Patch by Dmitry Konstantinov; reviewed by Brandon Williams, Stefan
Miklosovic for CASSANDRA-21056
---
.../org/apache/cassandra/metrics/ThreadLocalMeter.java | 15 ++++++++++++++-
.../apache/cassandra/metrics/ThreadLocalMeterTest.java | 8 ++++++++
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/src/java/org/apache/cassandra/metrics/ThreadLocalMeter.java
b/src/java/org/apache/cassandra/metrics/ThreadLocalMeter.java
index 2af9daf47c..3a20504e85 100644
--- a/src/java/org/apache/cassandra/metrics/ThreadLocalMeter.java
+++ b/src/java/org/apache/cassandra/metrics/ThreadLocalMeter.java
@@ -23,6 +23,7 @@ import java.util.ArrayList;
import java.util.BitSet;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
@@ -92,9 +93,21 @@ public class ThreadLocalMeter extends
com.codahale.metrics.Meter implements Mete
maxTicks = m3Ticks;
}
+ private static final ScheduledFuture<?> backgroundTickingJob;
+
+ /**
+ * the method is provided for test purposes only,
+ * to disable background activities and make tests more deterministic
+ */
+ @VisibleForTesting
+ static void disableBackgroundTicking()
+ {
+ backgroundTickingJob.cancel(true);
+ }
+
static
{
-
ScheduledExecutors.scheduledTasks.scheduleWithFixedDelay(ThreadLocalMeter::tickAll,
+ backgroundTickingJob =
ScheduledExecutors.scheduledTasks.scheduleWithFixedDelay(ThreadLocalMeter::tickAll,
BACKGROUND_TICK_INTERVAL_SEC,
BACKGROUND_TICK_INTERVAL_SEC,
TimeUnit.SECONDS);
diff --git a/test/unit/org/apache/cassandra/metrics/ThreadLocalMeterTest.java
b/test/unit/org/apache/cassandra/metrics/ThreadLocalMeterTest.java
index 8a467c3d6b..e81ee7daef 100644
--- a/test/unit/org/apache/cassandra/metrics/ThreadLocalMeterTest.java
+++ b/test/unit/org/apache/cassandra/metrics/ThreadLocalMeterTest.java
@@ -24,6 +24,7 @@ import java.util.Random;
import java.util.concurrent.TimeUnit;
import org.junit.Assert;
+import org.junit.Before;
import org.junit.Test;
import com.codahale.metrics.Clock;
@@ -37,6 +38,13 @@ import static org.junit.Assert.assertEquals;
public class ThreadLocalMeterTest
{
+
+ @Before
+ public void before()
+ {
+ ThreadLocalMeter.disableBackgroundTicking();
+ }
+
@Test
public void checkNoMark()
{
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]