You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by iv...@apache.org on 2019/03/26 14:34:31 UTC

[bookkeeper] branch master updated: fix potential NPE when releasing entry that is null

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

ivank 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 5902ee2  fix potential NPE when releasing entry that is null
5902ee2 is described below

commit 5902ee27be2fb7eeade53f5e8e4afd3fe573ad5c
Author: Boyang Jerry Peng <je...@gmail.com>
AuthorDate: Tue Mar 26 09:33:54 2019 -0500

    fix potential NPE when releasing entry that is null
    
    Descriptions of the changes in this PR:
    
    ### Motivation
    A interrupt exception can occur during the poll operation of the blocking and cause a NPE to be thrown
    
    ### Changes
    Check if entry is null before trying to release it
    
    
    Reviewers: Ivan Kelly <iv...@apache.org>, Sijie Guo <si...@apache.org>, Matteo Merli <mm...@apache.org>
    
    This closes #1998 from jerrypeng/fix_NPE
---
 .../apache/distributedlog/impl/logsegment/BKLogSegmentEntryReader.java | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/impl/logsegment/BKLogSegmentEntryReader.java b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/impl/logsegment/BKLogSegmentEntryReader.java
index 813e974..f414bf4 100644
--- a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/impl/logsegment/BKLogSegmentEntryReader.java
+++ b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/impl/logsegment/BKLogSegmentEntryReader.java
@@ -21,6 +21,7 @@ import static com.google.common.base.Charsets.UTF_8;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Lists;
+import io.netty.util.ReferenceCountUtil;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Enumeration;
@@ -800,7 +801,7 @@ public class BKLogSegmentEntryReader implements SafeRunnable, LogSegmentEntryRea
                         return;
                     }
                 } finally {
-                    removedEntry.release();
+                    ReferenceCountUtil.safeRelease(removedEntry);
                 }
             } else if (skipBrokenEntries && BKException.Code.DigestMatchException == entry.getRc()) {
                 // skip this entry and move forward