diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Result.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Result.java index 1ef1633d193..46b596370de 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Result.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Result.java @@ -913,7 +913,7 @@ public class Result implements CellScannable, CellScanner { @Override public Cell current() { - if (cells == null + if (isEmpty() || cellScannerIndex == INITIAL_CELLSCANNER_INDEX || cellScannerIndex >= cells.length) return null; @@ -922,7 +922,9 @@ public class Result implements CellScannable, CellScanner { @Override public boolean advance() { - if (cells == null) return false; + if (isEmpty()) { + return false; + } cellScannerIndex++; if (cellScannerIndex < this.cells.length) { return true; diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestResult.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestResult.java index 441e21ad29e..c6112766225 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestResult.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestResult.java @@ -125,14 +125,12 @@ public class TestResult extends TestCase { assertNull(r.current()); } - public void testAdvanceTwiceOnEmptyCell() throws IOException { + public void testAdvanceMultipleOnEmptyCell() throws IOException { Result r = Result.create(new Cell[0]); - assertFalse(r.advance()); - try { - r.advance(); - fail("NoSuchElementException should have been thrown!"); - } catch (NoSuchElementException ex) { - LOG.debug("As expected: " + ex.getMessage()); + // After HBASE-26688, advance of result with empty cell list will always return false. + // Here 10 is an arbitrary number to test the logic. + for (int i = 0; i < 10; i++) { + assertFalse(r.advance()); } }