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

lhotari pushed a commit to branch branch-4.2
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/branch-4.2 by this push:
     new ff7054f3dcc [fix][test] Fix flaky 
OffloadPrefixTest.testPositionOnEdgeOfLedger race with ledger rollover (#25561)
ff7054f3dcc is described below

commit ff7054f3dcce6c23d98336ac561889441cf6175f
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 38d7c17b9d4..b9c95f445cc 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
 

Reply via email to