You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by ch...@apache.org on 2023/07/14 10:42:41 UTC

[bookkeeper] 08/31: Fix keys leak in EntryLocationIndex when ledgersToDelete is empty (#3903)

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 <ch...@apache.org>
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;