lifepuzzlefun commented on code in PR #19992:
URL: https://github.com/apache/pulsar/pull/19992#discussion_r1155096425
##########
managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java:
##########
@@ -2931,39 +2949,53 @@ public void deleteCursorFailed(ManagedLedgerException
exception, Object ctx) {
private void asyncDeleteLedgerFromBookKeeper(long ledgerId) {
asyncDeleteLedger(ledgerId, DEFAULT_LEDGER_DELETE_RETRIES);
}
-
- private void asyncDeleteLedger(long ledgerId, LedgerInfo info) {
+ public CompletableFuture<Void> asyncDeleteLedger(long ledgerId, LedgerInfo
info) {
+ List<CompletableFuture<Void>> futures = new ArrayList<>();
if (!info.getOffloadContext().getBookkeeperDeleted()) {
// only delete if it hasn't been previously deleted for offload
- asyncDeleteLedger(ledgerId, DEFAULT_LEDGER_DELETE_RETRIES);
+ futures.add(asyncDeleteLedger(ledgerId,
DEFAULT_LEDGER_DELETE_RETRIES, null));
}
-
if (info.getOffloadContext().hasUidMsb()) {
UUID uuid = new UUID(info.getOffloadContext().getUidMsb(),
info.getOffloadContext().getUidLsb());
- OffloadUtils.cleanupOffloaded(ledgerId, uuid, config,
+ futures.add(OffloadUtils.cleanupOffloaded(ledgerId, uuid, config,
OffloadUtils.getOffloadDriverMetadata(info,
config.getLedgerOffloader().getOffloadDriverMetadata()),
- "Trimming", name, scheduledExecutor);
+ "Trimming", name, scheduledExecutor));
}
+ if (!futures.isEmpty()) {
+ return FutureUtil.waitForAll(futures);
+ }
+ return CompletableFuture.completedFuture(null);
}
private void asyncDeleteLedger(long ledgerId, long retry) {
- if (retry <= 0) {
- log.warn("[{}] Failed to delete ledger after retries {}", name,
ledgerId);
- return;
- }
+ asyncDeleteLedger(ledgerId, retry, null);
+ }
+ @VisibleForTesting
+ public CompletableFuture<Void> asyncDeleteLedger(long ledgerId, long retry,
+ CompletableFuture<Void>
callbackFuture) {
+ CompletableFuture<Void> future = callbackFuture == null ? new
CompletableFuture<>() : callbackFuture;
bookKeeper.asyncDeleteLedger(ledgerId, (rc, ctx) -> {
+ if (rc != BKException.Code.OK) {
Review Comment:
i think we can move rc != Ok block after NoSuchLedgerExist block. if ledger
is already deleted we can just return the logic.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]