This is an automated email from the ASF dual-hosted git repository.
lhotari pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-4.0 by this push:
new 6f57b1966b5 [fix][test] Fix flaky
OffloadPrefixTest.testPositionOnEdgeOfLedger race with ledger rollover (#25561)
6f57b1966b5 is described below
commit 6f57b1966b5dbcdfb07fb07f6c9a010300a7a4dd
Author: Matteo Merli <[email protected]>
AuthorDate: Wed Apr 22 04:26:54 2026 -0700
[fix][test] Fix flaky OffloadPrefixTest.testPositionOnEdgeOfLedger race
with ledger rollover (#25561)
(cherry picked from commit 77999fc8a9464b5af7ba0e541d3beb5906f83714)
---
.../java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git
a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java
b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java
index 09a0522bab4..2a50330a0da 100644
---
a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java
+++
b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/OffloadPrefixTest.java
@@ -56,6 +56,7 @@ import org.apache.commons.lang3.tuple.Pair;
import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl;
import org.apache.pulsar.metadata.api.MetadataStoreException;
import org.apache.pulsar.metadata.impl.FaultInjectionMetadataStore;
+import org.awaitility.Awaitility;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -234,7 +235,11 @@ public class OffloadPrefixTest extends
MockedBookKeeperTestCase {
String content = "entry-" + i;
ledger.addEntry(content.getBytes());
}
- assertEquals(ledger.getLedgersInfoAsList().size(), 2);
+ // After filling exactly 2 ledgers, the 2nd is closed and a 3rd empty
ledger starts
+ // being created asynchronously. Wait for that to finish so the rest
of the test runs
+ // against a stable state (l1 full, l2 full, l3 empty) instead of
racing with rollover.
+ Awaitility.await().untilAsserted(() ->
+ assertEquals(ledger.getLedgersInfoAsList().size(), 3));
Position p = ledger.getLastConfirmedEntry(); // position at end of
second ledger