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 0c9a158ea1cb11f4f8d1c58d067c6c33a357748e Author: Yan Zhao <[email protected]> AuthorDate: Fri May 19 09:40:49 2023 +0800 Fix npe when iterate pendingLedgersUpdates and pendingDeletedLedgers. (#3955) Descriptions of the changes in this PR: Fixes #3954 2023-05-12T16:58:26,212 - INFO - [db-storage-cleanup-5-1:EntryLocationIndex@244] - Deleted indexes from 10 ledgers in 0.006 seconds 2023-05-12T16:58:26,203 - ERROR - [SyncThread-7-1:SyncThread@111] - Exception in SyncThread java.lang.NullPointerException: null at org.apache.bookkeeper.bookie.storage.ldb.LedgerMetadataIndex.flush(LedgerMetadataIndex.java:303) ~[classes/:?] (cherry picked from commit a122b6b9ec21fe92e389fae42236b7daef84cb52) --- .../apache/bookkeeper/bookie/storage/ldb/LedgerMetadataIndex.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/LedgerMetadataIndex.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/LedgerMetadataIndex.java index f416187a78..9d84e6ac4c 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/LedgerMetadataIndex.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/LedgerMetadataIndex.java @@ -208,8 +208,8 @@ public class LedgerMetadataIndex implements Closeable { LongWrapper key = LongWrapper.get(); int updatedLedgers = 0; - while (!pendingLedgersUpdates.isEmpty()) { - Entry<Long, LedgerData> entry = pendingLedgersUpdates.poll(); + Entry<Long, LedgerData> entry; + while ((entry = pendingLedgersUpdates.poll()) != null) { key.set(entry.getKey()); byte[] value = entry.getValue().toByteArray(); ledgersDb.put(key.array, value); @@ -228,8 +228,8 @@ public class LedgerMetadataIndex implements Closeable { LongWrapper key = LongWrapper.get(); int deletedLedgers = 0; - while (!pendingDeletedLedgers.isEmpty()) { - long ledgerId = pendingDeletedLedgers.poll(); + Long ledgerId; + while ((ledgerId = pendingDeletedLedgers.poll()) != null) { key.set(ledgerId); ledgersDb.delete(key.array); }
