You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by lh...@apache.org on 2026/03/19 22:16:59 UTC

(pulsar) branch master updated: [fix][test] Fix flaky ConsumedLedgersTrimTest.testAdminTrimLedgers (#25360)

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 <mm...@apache.org>
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());
+        });
 
     }