This is an automated email from the ASF dual-hosted git repository.

nodece pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new d3aeb55b1d9 [fix][test] Fix flaky RateLimiterTest.testDispatchRate 
(#25846)
d3aeb55b1d9 is described below

commit d3aeb55b1d92ec993ac1ad0e1c78aeee3663ad80
Author: Lari Hotari <[email protected]>
AuthorDate: Thu May 21 05:09:38 2026 +0300

    [fix][test] Fix flaky RateLimiterTest.testDispatchRate (#25846)
---
 .../org/apache/pulsar/common/util/RateLimiterTest.java    | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git 
a/pulsar-common/src/test/java/org/apache/pulsar/common/util/RateLimiterTest.java
 
b/pulsar-common/src/test/java/org/apache/pulsar/common/util/RateLimiterTest.java
index fc0c900562f..ac5ad33cf10 100644
--- 
a/pulsar-common/src/test/java/org/apache/pulsar/common/util/RateLimiterTest.java
+++ 
b/pulsar-common/src/test/java/org/apache/pulsar/common/util/RateLimiterTest.java
@@ -26,6 +26,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Supplier;
 import lombok.Cleanup;
+import org.awaitility.Awaitility;
 import org.testng.annotations.Test;
 
 public class RateLimiterTest {
@@ -201,13 +202,13 @@ public class RateLimiterTest {
         rate.tryAcquire(100);
         assertEquals(rate.getAvailablePermits(), 0);
 
-        Thread.sleep(rateTimeMSec * 2);
-        // check after two rate-time: acquiredPermits is 100
-        assertEquals(rate.getAvailablePermits(), 0);
-
-        Thread.sleep(rateTimeMSec);
-        // check after three rate-time: acquiredPermits is 0
-        assertTrue(rate.getAvailablePermits() > 0);
+        // Each scheduled renew releases `permits` (100) from acquiredPermits 
(which starts at 300).
+        // Wait until the renew task has run enough times to make permits 
available again. Polling
+        // avoids flakiness caused by scheduler jitter under CI load that 
delays fixed-rate ticks.
+        Awaitility.await()
+                .atMost(rateTimeMSec * 10, TimeUnit.MILLISECONDS)
+                .pollInterval(100, TimeUnit.MILLISECONDS)
+                .until(() -> rate.getAvailablePermits() > 0);
 
         rate.close();
     }

Reply via email to