Skip to content

Commit 0c1ddf1

Browse files
author
wuzhanpeng
committed
fix testcase
1 parent 8069da0 commit 0c1ddf1

File tree

1 file changed

+38
-27
lines changed

1 file changed

+38
-27
lines changed

managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java

+38-27
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import com.google.common.collect.Queues;
3232
import com.google.common.collect.Range;
3333
import com.google.common.collect.Sets;
34+
import com.google.common.io.BaseEncoding;
3435
import io.netty.buffer.ByteBuf;
3536
import io.netty.buffer.Unpooled;
3637
import io.netty.util.Recycler;
@@ -2557,16 +2558,11 @@ void internalTrimLedgers(boolean isTruncate, CompletableFuture<?> promise) {
25572558
}
25582559

25592560
invalidateReadHandle(ls.getLedgerId());
2560-
2561-
// Retain the offloaded ledger info until actual delete
2562-
if (!deletableOffloadedLedgers.contains(ls.getLedgerId())) {
2563-
ledgers.remove(ls.getLedgerId());
2564-
}
2561+
ledgers.remove(ls.getLedgerId());
2562+
entryCache.invalidateAllEntries(ls.getLedgerId());
25652563

25662564
NUMBER_OF_ENTRIES_UPDATER.addAndGet(this, -ls.getEntries());
25672565
TOTAL_SIZE_UPDATER.addAndGet(this, -ls.getSize());
2568-
2569-
entryCache.invalidateAllEntries(ls.getLedgerId());
25702566
}
25712567
for (LedgerInfo ls : offloadedLedgersToDelete) {
25722568
LedgerInfo.Builder newInfoBuilder = ls.toBuilder();
@@ -4136,7 +4132,10 @@ public void markDeletableLedgers(Collection<Long> deletableLedgerIds,
41364132
}
41374133
for (Long ledgerId : deletableOffloadedLedgerIds) {
41384134
final String deletableOffloadedLedgerMarker = DELETABLE_OFFLOADED_LEDGER_MARKER_PREFIX + ledgerId;
4139-
propertiesMap.put(deletableOffloadedLedgerMarker, DELETABLE_LEDGER_PLACEHOLDER);
4135+
// Offload context info is required in ledger cleanup, therefore the serialized info object
4136+
// is kept in the propertiesMap until the ledger deletion is done
4137+
final String offloadedLedgerInfo = BaseEncoding.base64().encode(ledgers.get(ledgerId).toByteArray());
4138+
propertiesMap.put(deletableOffloadedLedgerMarker, offloadedLedgerInfo);
41404139
}
41414140
}
41424141

@@ -4213,26 +4212,38 @@ public void deleteLedgerFailed(ManagedLedgerException exception, Object ctx) {
42134212
}
42144213

42154214
for (Long deletableOffloadedLedger : deletableOffloadedLedgers) {
4216-
asyncDeleteOffloadedLedger(deletableOffloadedLedger,
4217-
ledgers.get(deletableOffloadedLedger), DEFAULT_LEDGER_DELETE_RETRIES,
4218-
new DeleteLedgerCallback() {
4219-
@Override
4220-
public void deleteLedgerComplete(Object ctx) {
4221-
ledgers.remove(deletableOffloadedLedger);
4222-
counter.countDown();
4223-
finishedDeletedOffloadedLedgers.add(deletableOffloadedLedger);
4224-
succeedDeletedOffloadedLedgers.add(deletableOffloadedLedger);
4225-
}
4215+
final String deletableOffloadedLedgerMarker =
4216+
DELETABLE_OFFLOADED_LEDGER_MARKER_PREFIX + deletableOffloadedLedger;
42264217

4227-
@Override
4228-
public void deleteLedgerFailed(ManagedLedgerException exception, Object ctx) {
4229-
log.warn("[{}] Failed to delete offloaded ledger:{} due to",
4230-
name, deletableOffloadedLedger, exception);
4231-
counter.countDown();
4232-
finishedDeletedOffloadedLedgers.add(deletableOffloadedLedger);
4233-
failDeletedOffloadedLedgers.add(deletableOffloadedLedger);
4234-
}
4235-
});
4218+
try {
4219+
final LedgerInfo deletableOffloadedLedgerInfo = LedgerInfo.parseFrom(
4220+
BaseEncoding.base64().decode(propertiesMap.get(deletableOffloadedLedgerMarker)));
4221+
asyncDeleteOffloadedLedger(deletableOffloadedLedger, deletableOffloadedLedgerInfo,
4222+
DEFAULT_LEDGER_DELETE_RETRIES,
4223+
new DeleteLedgerCallback() {
4224+
@Override
4225+
public void deleteLedgerComplete(Object ctx) {
4226+
counter.countDown();
4227+
finishedDeletedOffloadedLedgers.add(deletableOffloadedLedger);
4228+
succeedDeletedOffloadedLedgers.add(deletableOffloadedLedger);
4229+
}
4230+
4231+
@Override
4232+
public void deleteLedgerFailed(ManagedLedgerException exception, Object ctx) {
4233+
log.warn("[{}] Failed to delete offloaded ledger:{} due to",
4234+
name, deletableOffloadedLedger, exception);
4235+
counter.countDown();
4236+
finishedDeletedOffloadedLedgers.add(deletableOffloadedLedger);
4237+
failDeletedOffloadedLedgers.add(deletableOffloadedLedger);
4238+
}
4239+
});
4240+
} catch (Exception e) {
4241+
log.warn("[{}] Failed to retrieve offloaded ledger info of {} due to",
4242+
name, deletableOffloadedLedger, e);
4243+
counter.countDown();
4244+
finishedDeletedOffloadedLedgers.add(deletableOffloadedLedger);
4245+
failDeletedOffloadedLedgers.add(deletableOffloadedLedger);
4246+
}
42364247
}
42374248

42384249
try {

0 commit comments

Comments
 (0)