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

yong pushed a commit to branch branch-4.15
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 1ab2a41f33e01331fc5e0d9f136fa195a5633ae1
Author: Zhangao <[email protected]>
AuthorDate: Fri Apr 7 15:08:42 2023 +0800

    Execute clean indexes in finally (#3772)
    
    Execute clean indexes in finally (#3772)
    
    (cherry picked from commit 04e572b9bccd1502c0f2c4a87f23d760d4d0d9b5)
---
 .../ldb/SingleDirectoryDbLedgerStorage.java        | 29 +++++++++++-----------
 1 file changed, 14 insertions(+), 15 deletions(-)

diff --git 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/SingleDirectoryDbLedgerStorage.java
 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/SingleDirectoryDbLedgerStorage.java
index 455f19fbe9..0f7135fa99 100644
--- 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/SingleDirectoryDbLedgerStorage.java
+++ 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/SingleDirectoryDbLedgerStorage.java
@@ -754,21 +754,6 @@ public class SingleDirectoryDbLedgerStorage implements 
CompactableLedgerStorage
             ledgerIndex.flush();
             
recordSuccessfulEvent(dbLedgerStorageStats.getFlushLedgerIndexStats(), 
ledgerIndexStartTime);
 
-            cleanupExecutor.execute(() -> {
-                // There can only be one single cleanup task running because 
the cleanupExecutor
-                // is single-threaded
-                try {
-                    if (log.isDebugEnabled()) {
-                        log.debug("Removing deleted ledgers from db indexes");
-                    }
-
-                    entryLocationIndex.removeOffsetFromDeletedLedgers();
-                    ledgerIndex.removeDeletedLedgers();
-                } catch (Throwable t) {
-                    log.warn("Failed to cleanup db indexes", t);
-                }
-            });
-
             lastCheckpoint = thisCheckpoint;
 
             // Discard all the entry from the write cache, since they're now 
persisted
@@ -788,6 +773,20 @@ public class SingleDirectoryDbLedgerStorage implements 
CompactableLedgerStorage
             // Leave IOExecption as it is
             throw e;
         } finally {
+            cleanupExecutor.execute(() -> {
+                // There can only be one single cleanup task running because 
the cleanupExecutor
+                // is single-threaded
+                try {
+                    if (log.isDebugEnabled()) {
+                        log.debug("Removing deleted ledgers from db indexes");
+                    }
+
+                    entryLocationIndex.removeOffsetFromDeletedLedgers();
+                    ledgerIndex.removeDeletedLedgers();
+                } catch (Throwable t) {
+                    log.warn("Failed to cleanup db indexes", t);
+                }
+            });
             try {
                 isFlushOngoing.set(false);
             } finally {

Reply via email to