This is an automated email from the ASF dual-hosted git repository.
lushiji pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/master by this push:
new f1657eaf4c [Bug] SingleDirectoryDbLedgerStorage#flushMutex does not
release lock on all exception paths (#3909)
f1657eaf4c is described below
commit f1657eaf4cbe7257a729ab784ddf2b002e989300
Author: StevenLuMT <[email protected]>
AuthorDate: Fri Apr 7 18:33:19 2023 +0800
[Bug] SingleDirectoryDbLedgerStorage#flushMutex does not release lock on
all exception paths (#3909)
Co-authored-by: lushiji <[email protected]>
---
.../ldb/SingleDirectoryDbLedgerStorage.java | 27 +++++++++++-----------
1 file changed, 14 insertions(+), 13 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 9f089d9864..dd673f319a 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
@@ -843,21 +843,22 @@ 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");
+ try {
+ 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);
}
+ });
- entryLocationIndex.removeOffsetFromDeletedLedgers();
- ledgerIndex.removeDeletedLedgers();
- } catch (Throwable t) {
- log.warn("Failed to cleanup db indexes", t);
- }
- });
- try {
isFlushOngoing.set(false);
} finally {
flushMutex.unlock();