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

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

commit 843cd7a7c24546e091a055de86077eb7e65d9078
Author: Hang Chen <[email protected]>
AuthorDate: Mon Apr 10 09:23:27 2023 +0800

    Fix keys leak in EntryLocationIndex when ledgersToDelete is empty (#3903)
    
    In EntryLocationIndex#removeOffsetFromDeletedLedgers, if there are no 
ledgers to delete, the key pair will leak.
    
    Check the ledgers to deletion Set first, and if the set is not empty, then 
generate the keys.
    
    (cherry picked from commit ceba60565cf7cb438e9be4ab7416a2808b9168a1)
---
 .../apache/bookkeeper/bookie/storage/ldb/EntryLocationIndex.java  | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/EntryLocationIndex.java
 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/EntryLocationIndex.java
index f07f870b1a..453358b2eb 100644
--- 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/EntryLocationIndex.java
+++ 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/EntryLocationIndex.java
@@ -188,16 +188,16 @@ public class EntryLocationIndex implements Closeable {
     }
 
     public void removeOffsetFromDeletedLedgers() throws IOException {
-        LongPairWrapper firstKeyWrapper = LongPairWrapper.get(-1, -1);
-        LongPairWrapper lastKeyWrapper = LongPairWrapper.get(-1, -1);
-        LongPairWrapper keyToDelete = LongPairWrapper.get(-1, -1);
-
         Set<Long> ledgersToDelete = deletedLedgers.items();
 
         if (ledgersToDelete.isEmpty()) {
             return;
         }
 
+        LongPairWrapper firstKeyWrapper = LongPairWrapper.get(-1, -1);
+        LongPairWrapper lastKeyWrapper = LongPairWrapper.get(-1, -1);
+        LongPairWrapper keyToDelete = LongPairWrapper.get(-1, -1);
+
         log.info("Deleting indexes for ledgers: {}", ledgersToDelete);
         long startTime = System.nanoTime();
         long deletedEntries = 0;

Reply via email to