Skip to content

Commit

Permalink
HBASE-26688 Threads shared EMPTY_RESULT may lead to unexpected client…
Browse files Browse the repository at this point in the history
… job down (#4073)

Signed-off-by: Duo Zhang <zhangduo@apache.org>
  • Loading branch information
YutSean authored Feb 15, 2022
1 parent 7316ba9 commit 1af2262
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -913,7 +913,7 @@ public CellScanner cellScanner() {

@Override
public Cell current() {
if (cells == null
if (isEmpty()
|| cellScannerIndex == INITIAL_CELLSCANNER_INDEX
|| cellScannerIndex >= cells.length)
return null;
Expand All @@ -922,7 +922,9 @@ public Cell current() {

@Override
public boolean advance() {
if (cells == null) return false;
if (isEmpty()) {
return false;
}
cellScannerIndex++;
if (cellScannerIndex < this.cells.length) {
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,14 +132,12 @@ public void testCurrentOnEmptyCell() throws IOException {
}

@Test
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());
}
}

Expand Down

0 comments on commit 1af2262

Please sign in to comment.