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();
}