You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2013/09/24 19:56:05 UTC

svn commit: r1525953 - /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java

Author: tedyu
Date: Tue Sep 24 17:56:05 2013
New Revision: 1525953

URL: http://svn.apache.org/r1525953
Log:
HBASE-9519 fix NPE in EncodedScannerV2.getFirstKeyInBlock()


Modified:
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java?rev=1525953&r1=1525952&r2=1525953&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java Tue Sep 24 17:56:05 2013
@@ -992,17 +992,18 @@ public class HFileReaderV2 extends Abstr
             "EncodedScanner works only on encoded data blocks");
       }
 
-      short dataBlockEncoderId = block.getDataBlockEncodingId();
+      updateDataBlockEncoder(block);
+      seeker.setCurrentBuffer(getEncodedBuffer(newBlock));
+      blockFetches++;
+    }
+
+    private void updateDataBlockEncoder(HFileBlock curBlock) {
+      short dataBlockEncoderId = curBlock.getDataBlockEncodingId();
       if (dataBlockEncoder == null ||
-          !DataBlockEncoding.isCorrectEncoder(dataBlockEncoder,
-              dataBlockEncoderId)) {
-        DataBlockEncoder encoder =
-            DataBlockEncoding.getDataBlockEncoderById(dataBlockEncoderId);
+          !DataBlockEncoding.isCorrectEncoder(dataBlockEncoder, dataBlockEncoderId)) {
+        DataBlockEncoder encoder = DataBlockEncoding.getDataBlockEncoderById(dataBlockEncoderId);
         setDataBlockEncoder(encoder);
       }
-
-      seeker.setCurrentBuffer(getEncodedBuffer(newBlock));
-      blockFetches++;
     }
 
     private ByteBuffer getEncodedBuffer(HFileBlock newBlock) {
@@ -1097,6 +1098,7 @@ public class HFileReaderV2 extends Abstr
 
     @Override
     protected ByteBuffer getFirstKeyInBlock(HFileBlock curBlock) {
+      updateDataBlockEncoder(curBlock);
       return dataBlockEncoder.getFirstKeyInBlock(getEncodedBuffer(curBlock));
     }