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]

Reply via email to