From c5cc517725edbaa1b1f23a0b43fe23b6792b6fc9 Mon Sep 17 00:00:00 2001 From: Matteo Merli Date: Fri, 3 Apr 2026 14:20:15 -0700 Subject: [PATCH] [fix][test] Fix flaky ManagedLedgerTest.testNoRetention Replace unreliable Thread.sleep(1000) with explicit trimConsumedLedgersInBackground + CompletableFuture.join() to deterministically wait for ledger trimming to complete. --- .../apache/bookkeeper/mledger/impl/ManagedLedgerTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java index 7c92d1b4c5976..1d36edeb71bfe 100644 --- a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java +++ b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java @@ -2309,8 +2309,10 @@ public void testNoRetention() throws Exception { c1 = ml.openCursor("c1noretention"); ml.addEntry("shortmessage".getBytes()); c1.skipEntries(1, IndividualDeletedEntries.Exclude); - // sleep for trim - Thread.sleep(1000); + // Explicitly trigger trimming and wait for it to complete + CompletableFuture trimFuture = new CompletableFuture<>(); + ml.trimConsumedLedgersInBackground(trimFuture); + trimFuture.join(); ml.close(); assertTrue(ml.getLedgersInfoAsList().size() <= 1);