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

[bookkeeper] 22/31: Fix npe when iterate pendingLedgersUpdates and pendingDeletedLedgers. (#3955)

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

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

commit c8d98333f93692ebf3ec6b78384c6ec19e605ba1
Author: Yan Zhao <ho...@apache.org>
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 989969c483..c93bc0b7db 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
@@ -298,8 +298,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);
@@ -318,8 +318,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);
         }