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

lhotari 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 2144968bd0a [fix][test] Fix flaky 
ConsumedLedgersTrimTest.testAdminTrimLedgers (#25360)
2144968bd0a is described below

commit 2144968bd0a86290699d0b2c33478bbe2785c75a
Author: Matteo Merli <[email protected]>
AuthorDate: Thu Mar 19 15:16:52 2026 -0700

    [fix][test] Fix flaky ConsumedLedgersTrimTest.testAdminTrimLedgers (#25360)
---
 .../pulsar/broker/service/ConsumedLedgersTrimTest.java  | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ConsumedLedgersTrimTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ConsumedLedgersTrimTest.java
index a961eef21ae..7d673decd2a 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ConsumedLedgersTrimTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ConsumedLedgersTrimTest.java
@@ -189,7 +189,6 @@ public class ConsumedLedgersTrimTest extends 
SharedPulsarBaseTest {
         Producer<byte[]> producer = pulsarClient.newProducer()
                 .topic(partitionedTopic)
                 .enableBatching(false)
-                .producerName("producer-name")
                 .create();
         @Cleanup
         Consumer<byte[]> consumer = 
pulsarClient.newConsumer().topic(partitionedTopic)
@@ -218,9 +217,19 @@ public class ConsumedLedgersTrimTest extends 
SharedPulsarBaseTest {
             consumer.acknowledge(msg);
         }
         //consumed ledger should be cleaned
-        admin.topics().trimTopic(partitionedTopic);
-        Awaitility.await().atMost(30, TimeUnit.SECONDS).untilAsserted(() ->
-                
Assert.assertEquals(managedLedger.getLedgersInfoAsList().size(), 1));
+        // After trimming, the managed ledger should have at most 2 ledgers 
remaining:
+        // - The ledger containing the last confirmed entry (cannot be trimmed)
+        // - Possibly an empty active ledger if the last write caused a 
rollover
+        //   (with maxEntriesPerLedger=2, if partition-0 receives an even 
number of
+        //   messages, the last ledger is full and a new empty active ledger 
is created)
+        // Re-trigger trim inside the loop because 
trimConsumedLedgersInBackground() is async
+        // and the mark-delete position may not have been persisted yet on the 
first call.
+        Awaitility.await().atMost(30, TimeUnit.SECONDS).untilAsserted(() -> {
+            
managedLedger.trimConsumedLedgersInBackground(CompletableFuture.completedFuture(null));
+            Assert.assertTrue(managedLedger.getLedgersInfoAsList().size() <= 2,
+                    "Expected at most 2 ledgers after trim, but found "
+                            + managedLedger.getLedgersInfoAsList().size());
+        });
 
     }
 

Reply via email to