Revert "guard against NPE while reading FileTrailer and HFileBlock"
This reverts commit 201c8382508da1266d11e04d3c7cbef42e0a256a. Reverted because missing JIRA number. Fixing... Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/9a4068dc Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/9a4068dc Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/9a4068dc Branch: refs/heads/hbase-12439 Commit: 9a4068dcf8caec644e6703ffa365a8649bbd336e Parents: edbd0e4 Author: Michael Stack <st...@apache.org> Authored: Thu Mar 16 14:53:25 2017 -0700 Committer: Michael Stack <st...@apache.org> Committed: Thu Mar 16 14:53:25 2017 -0700 ---------------------------------------------------------------------- .../hadoop/hbase/io/hfile/FixedFileTrailer.java | 3 +- .../hadoop/hbase/io/hfile/HFileBlock.java | 2 +- .../apache/hadoop/hbase/io/hfile/HFileUtil.java | 43 -------------------- 3 files changed, 2 insertions(+), 46 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/9a4068dc/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.java index 1854236..7eac9c6 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.java @@ -388,8 +388,7 @@ public class FixedFileTrailer { bufferSize = (int) fileSize; } - HFileUtil.seekOnMultipleSources(istream, seekPoint); - + istream.seek(seekPoint); ByteBuffer buf = ByteBuffer.allocate(bufferSize); istream.readFully(buf.array(), buf.arrayOffset(), buf.arrayOffset() + buf.limit()); http://git-wip-us.apache.org/repos/asf/hbase/blob/9a4068dc/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java index 0b140b6..fba15ba 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java @@ -1512,7 +1512,7 @@ public class HFileBlock implements Cacheable { if (!pread && streamLock.tryLock()) { // Seek + read. Better for scanning. try { - HFileUtil.seekOnMultipleSources(istream, fileOffset); + istream.seek(fileOffset); long realOffset = istream.getPos(); if (realOffset != fileOffset) { http://git-wip-us.apache.org/repos/asf/hbase/blob/9a4068dc/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileUtil.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileUtil.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileUtil.java deleted file mode 100644 index 835450c..0000000 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileUtil.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.hadoop.hbase.io.hfile; - -import java.io.IOException; - -import org.apache.hadoop.fs.FSDataInputStream; - -public class HFileUtil { - - /** guards against NullPointer - * utility which tries to seek on the DFSIS and will try an alternative source - * if the FSDataInputStream throws an NPE HBASE-17501 - * @param istream - * @param offset - * @throws IOException - */ - static public void seekOnMultipleSources(FSDataInputStream istream, long offset) throws IOException { - try { - // attempt to seek inside of current blockReader - istream.seek(offset); - } catch (NullPointerException e) { - // retry the seek on an alternate copy of the data - // this can occur if the blockReader on the DFSInputStream is null - istream.seekToNewSource(offset); - } - } -}