From d89ec76070478527ef60c7d00adc43adf547a2af Mon Sep 17 00:00:00 2001 From: Josh Elser Date: Thu, 11 Jun 2015 20:33:19 -0400 Subject: [PATCH] HBASE-13892 NPE in ClientScanner on null results array --- .../org/apache/hadoop/hbase/client/ClientScanner.java | 3 ++- .../apache/hadoop/hbase/client/TestFromClientSide.java | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientScanner.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientScanner.java index 947eb69..d674534 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientScanner.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientScanner.java @@ -573,7 +573,8 @@ public class ClientScanner extends AbstractClientScanner { // the caller will receive a result back where the number of cells in the result is less than // the batch size even though it may not be the last group of cells for that row. if (allowPartials || isBatchSet) { - addResultsToList(resultsToAddToCache, resultsFromServer, 0, resultsFromServer.length); + addResultsToList(resultsToAddToCache, resultsFromServer, 0, + (null == resultsFromServer ? 0 : resultsFromServer.length)); return resultsToAddToCache; } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java index 6381862..d3ce7c3 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java @@ -72,6 +72,8 @@ import org.apache.hadoop.hbase.filter.CompareFilter; import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp; import org.apache.hadoop.hbase.filter.Filter; import org.apache.hadoop.hbase.filter.FilterList; +import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter; +import org.apache.hadoop.hbase.filter.InclusiveStopFilter; import org.apache.hadoop.hbase.filter.KeyOnlyFilter; import org.apache.hadoop.hbase.filter.LongComparator; import org.apache.hadoop.hbase.filter.PrefixFilter; @@ -6415,4 +6417,17 @@ public class TestFromClientSide { } } } + + @Test + public void testFilterAllRecords() throws IOException { + Scan scan = new Scan(); + scan.setBatch(1); + scan.setCaching(1); + // Filter out any records + scan.setFilter(new FilterList(new FirstKeyOnlyFilter(), new InclusiveStopFilter(new byte[0]))); + Table table = TEST_UTIL.getConnection().getTable(TableName.NAMESPACE_TABLE_NAME); + ResultScanner s = table.getScanner(scan); + assertNull(s.next()); + table.close(); + } } -- 2.1.2