Skip to content

Commit daa66dc

Browse files
committed
[fix][broker] Fix some flaky assert in ManagedLedgerTest.testTrimmerRaceCondition
1 parent 3569bde commit daa66dc

1 file changed

Lines changed: 7 additions & 5 deletions

File tree

managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
package org.apache.bookkeeper.mledger.impl;
2020

2121
import static java.nio.charset.StandardCharsets.UTF_8;
22+
import static org.assertj.core.api.Assertions.assertThat;
2223
import static org.mockito.ArgumentMatchers.any;
2324
import static org.mockito.ArgumentMatchers.anyInt;
2425
import static org.mockito.ArgumentMatchers.anyMap;
@@ -5165,7 +5166,7 @@ public void testComparePositions() throws Exception {
51655166
ml.delete();
51665167
}
51675168

5168-
@Test
5169+
@Test(invocationCount = 100)
51695170
public void testTrimmerRaceCondition() throws Exception {
51705171
ManagedLedgerConfig config = new ManagedLedgerConfig();
51715172
config.setMaxEntriesPerLedger(1);
@@ -5201,18 +5202,19 @@ public void markDeleteFailed(ManagedLedgerException exception, Object ctx) {
52015202
}, null);
52025203

52035204
latch.await();
5204-
assertEquals(cursor.getPersistentMarkDeletedPosition(), lastPosition);
5205-
assertEquals(ledger.getCursors().getSlowestCursorPosition(), lastPosition);
5205+
assertThat(cursor.getPersistentMarkDeletedPosition()).isGreaterThanOrEqualTo(lastPosition);
5206+
assertThat(ledger.getCursors().getSlowestCursorPosition()).isGreaterThanOrEqualTo(lastPosition);
52065207
assertEquals(cursor.getProperties(), properties);
52075208

5208-
// 3. Add Entry 2. Triggers Rollover.
5209+
// 3. Add Entry 2. Triggers second rollover process.
52095210
// This implicitly calls maybeUpdateCursorBeforeTrimmingConsumedLedger due to rollover
52105211
Position p = ledger.addEntry("entry-2".getBytes(Encoding));
52115212

52125213
// Wait for background tasks (metadata callback) to complete.
52135214
// We expect at least 2 ledgers (Rollover happened).
52145215
Awaitility.await().atMost(5, TimeUnit.SECONDS).until(() -> ledger.getLedgersInfo().size() >= 2);
5215-
assertEquals(cursor.getPersistentMarkDeletedPosition(), new ImmutablePositionImpl(p.getLedgerId(), -1));
5216+
// First ledger is all consumed and trimmed, left current ledger and next empty ledger.
5217+
assertEquals(cursor.getPersistentMarkDeletedPosition(), PositionFactory.create(p.getLedgerId(), -1));
52165218

52175219
// Verify properties are preserved after cursor reset
52185220
assertEquals(cursor.getProperties(), properties);

0 commit comments

Comments
 (0)