diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java index aab3b36..fa09458 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java @@ -860,15 +860,19 @@ public class HBaseFsck extends Configured implements Closeable { for (FileStatus storeFile : storeFiles) { HFile.Reader reader = HFile.createReader(fs, storeFile.getPath(), new CacheConfig(getConf()), true, getConf()); - if ((reader.getFirstKey() != null) - && ((storeFirstKey == null) || (comparator.compare(storeFirstKey, - ((KeyValue.KeyOnlyKeyValue) reader.getFirstKey().get()).getKey()) > 0))) { - storeFirstKey = ((KeyValue.KeyOnlyKeyValue)reader.getFirstKey().get()).getKey(); + if (reader.getFirstKey().isPresent()) { + byte[] firstKey = keyOnly(((KeyValue.KeyOnlyKeyValue) reader.getFirstKey().get()) + .getKey()); + if (storeFirstKey == null || comparator.compare(storeFirstKey, firstKey) > 0) { + storeFirstKey = firstKey; + } } - if ((reader.getLastKey() != null) - && ((storeLastKey == null) || (comparator.compare(storeLastKey, - ((KeyValue.KeyOnlyKeyValue)reader.getLastKey().get()).getKey())) < 0)) { - storeLastKey = ((KeyValue.KeyOnlyKeyValue)reader.getLastKey().get()).getKey(); + if (reader.getLastKey().isPresent()) { + byte[] lastKey = keyOnly(((KeyValue.KeyOnlyKeyValue) reader.getLastKey().get()) + .getKey()); + if (storeLastKey == null || comparator.compare(storeLastKey, lastKey) < 0) { + storeLastKey = lastKey; + } } reader.close(); } @@ -876,8 +880,8 @@ public class HBaseFsck extends Configured implements Closeable { } currentRegionBoundariesInformation.metaFirstKey = regionInfo.getStartKey(); currentRegionBoundariesInformation.metaLastKey = regionInfo.getEndKey(); - currentRegionBoundariesInformation.storesFirstKey = keyOnly(storeFirstKey); - currentRegionBoundariesInformation.storesLastKey = keyOnly(storeLastKey); + currentRegionBoundariesInformation.storesFirstKey = storeFirstKey; + currentRegionBoundariesInformation.storesLastKey = storeLastKey; if (currentRegionBoundariesInformation.metaFirstKey.length == 0) currentRegionBoundariesInformation.metaFirstKey = null; if (currentRegionBoundariesInformation.metaLastKey.length == 0)