You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by eo...@apache.org on 2021/06/22 09:59:00 UTC

[pulsar] branch branch-2.8 updated: Fix the flaky test in the ManagedLedgerTest (#11016)

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

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


The following commit(s) were added to refs/heads/branch-2.8 by this push:
     new a9b49ef  Fix the flaky test in the ManagedLedgerTest (#11016)
a9b49ef is described below

commit a9b49efa96965a6b6b84a886460be76d98cc025f
Author: lipenghui <pe...@apache.org>
AuthorDate: Tue Jun 22 17:55:34 2021 +0800

    Fix the flaky test in the ManagedLedgerTest (#11016)
    
    fixes testExpiredLedgerDeletionAfterManagedLedgerRestart
    
    (cherry picked from commit 1623790669c35916aa5673c4a7527ef512379442)
---
 .../bookkeeper/mledger/impl/ManagedLedgerTest.java | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 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 97a7d5f..e0b15fe 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
@@ -108,6 +108,7 @@ import org.apache.pulsar.common.api.proto.CommandSubscribe.InitialPosition;
 import org.apache.pulsar.common.policies.data.EnsemblePlacementPolicyConfig;
 import org.apache.pulsar.metadata.api.MetadataStoreException;
 import org.apache.pulsar.metadata.api.Stat;
+import org.awaitility.Awaitility;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testng.Assert;
@@ -2940,11 +2941,6 @@ public class ManagedLedgerTest extends MockedBookKeeperTestCase {
         Assert.assertEquals(managedLedger.getLedgersInfoAsList().size(), 2);
         List<Entry> entries = cursor.readEntries(3);
 
-        for (Entry entry : entries) {
-            cursor.markDelete(entry.getPosition());
-        }
-        entries.forEach(e -> e.release());
-
         // managed-ledger restart
         managedLedger.close();
         managedLedger = (ManagedLedgerImpl) factory.open("ml_restart_ledger", config);
@@ -2953,14 +2949,20 @@ public class ManagedLedgerTest extends MockedBookKeeperTestCase {
         // and now ledgers are [{entries=2}, {entries=1}, {entries=0}]
         Assert.assertTrue(managedLedger.getLedgersInfoAsList().size() >= 2);
 
+        cursor = managedLedger.openCursor("c1");
+        for (Entry entry : entries) {
+            cursor.markDelete(entry.getPosition());
+        }
+        entries.forEach(Entry::release);
         // Now we update the cursors that are still subscribing to ledgers that has been consumed completely
         managedLedger.maybeUpdateCursorBeforeTrimmingConsumedLedger();
         managedLedger.internalTrimConsumedLedgers(Futures.NULL_PROMISE);
-        Thread.sleep(100);
-
-        // We only have one empty ledger at last [{entries=0}]
-        Assert.assertEquals(managedLedger.getLedgersInfoAsList().size(), 1);
-        Assert.assertEquals(managedLedger.getTotalSize(), 0);
+        ManagedLedgerImpl finalManagedLedger = managedLedger;
+        Awaitility.await().untilAsserted(() -> {
+            // We only have one empty ledger at last [{entries=0}]
+            Assert.assertEquals(finalManagedLedger.getLedgersInfoAsList().size(), 1);
+            Assert.assertEquals(finalManagedLedger.getTotalSize(), 0);
+        });
     }
   
     @Test(timeOut = 20000)