@Override public synchronized Result next() throws IOException { while (queue.isEmpty()) { if (closed) { return null; } if (error != null) { Throwables.propagateIfPossible(error, IOException.class); throw new IOException(error); } try { wait(); } catch (InterruptedException e) { throw new InterruptedIOException(); } } Result result = queue.poll(); if (!result.isCursor()) { cacheSize -= calcEstimatedSize(result); if (resumer != null && cacheSize <= maxCacheSize / 2) { resumePrefetch(); } } return result; }
if (value != null && value.isCursor()) { key.set(value.getCursor().getRow()); lastSuccessfulRow = key.get();
@Test public void testHeartbeatWithSparseFilterReversed() throws Exception { try (ResultScanner scanner = getScanner(createReversedScanWithSparseFilter())) { int num = 0; Result r; while ((r = scanner.next()) != null) { if (num < (NUM_ROWS - 1) * NUM_FAMILIES * NUM_QUALIFIERS) { assertTrue(r.isCursor()); assertArrayEquals(ROWS[NUM_ROWS - 1 - num / NUM_FAMILIES / NUM_QUALIFIERS], r.getCursor().getRow()); } else { assertFalse(r.isCursor()); assertArrayEquals(ROWS[0], r.getRow()); } num++; } } }
@Test public void testHeartbeatWithSparseFilter() throws Exception { try (ResultScanner scanner = getScanner(createScanWithSparseFilter())) { int num = 0; Result r; while ((r = scanner.next()) != null) { if (num < (NUM_ROWS - 1) * NUM_FAMILIES * NUM_QUALIFIERS) { assertTrue(r.isCursor()); assertArrayEquals(ROWS[num / NUM_FAMILIES / NUM_QUALIFIERS], r.getCursor().getRow()); } else { assertFalse(r.isCursor()); assertArrayEquals(ROWS[num / NUM_FAMILIES / NUM_QUALIFIERS], r.getRow()); } num++; } } }
@Test public void testSizeLimit() throws IOException { try (ResultScanner scanner = TEST_UTIL.getConnection().getTable(TABLE_NAME).getScanner(createScanWithSizeLimit())) { int num = 0; Result r; while ((r = scanner.next()) != null) { if (num % (NUM_FAMILIES * NUM_QUALIFIERS) != (NUM_FAMILIES * NUM_QUALIFIERS) - 1) { assertTrue(r.isCursor()); assertArrayEquals(ROWS[num / NUM_FAMILIES / NUM_QUALIFIERS], r.getCursor().getRow()); } else { assertFalse(r.isCursor()); assertArrayEquals(ROWS[num / NUM_FAMILIES / NUM_QUALIFIERS], r.getRow()); } num++; } } } }
@Override public synchronized Result next() throws IOException { while (queue.isEmpty()) { if (closed) { return null; } if (error != null) { Throwables.propagateIfPossible(error, IOException.class); throw new IOException(error); } try { wait(); } catch (InterruptedException e) { throw new InterruptedIOException(); } } Result result = queue.poll(); if (!result.isCursor()) { cacheSize -= calcEstimatedSize(result); if (resumer != null && cacheSize <= maxCacheSize / 2) { resumePrefetch(); } } return result; }
@Override public synchronized Result next() throws IOException { while (queue.isEmpty()) { if (closed) { return null; } if (error != null) { Throwables.propagateIfPossible(error, IOException.class); throw new IOException(error); } try { wait(); } catch (InterruptedException e) { throw new InterruptedIOException(); } } Result result = queue.poll(); if (!result.isCursor()) { cacheSize -= calcEstimatedSize(result); if (resumer != null && cacheSize <= maxCacheSize / 2) { resumePrefetch(); } } return result; }
if (value != null && value.isCursor()) { key.set(value.getCursor().getRow()); lastSuccessfulRow = key.get();
@Test public void testHeartbeatWithSparseFilter() throws Exception { try (ResultScanner scanner = getScanner(createScanWithSparseFilter())) { int num = 0; Result r; while ((r = scanner.next()) != null) { if (num < (NUM_ROWS - 1) * NUM_FAMILIES * NUM_QUALIFIERS) { assertTrue(r.isCursor()); assertArrayEquals(ROWS[num / NUM_FAMILIES / NUM_QUALIFIERS], r.getCursor().getRow()); } else { assertFalse(r.isCursor()); assertArrayEquals(ROWS[num / NUM_FAMILIES / NUM_QUALIFIERS], r.getRow()); } num++; } } }
@Test public void testHeartbeatWithSparseFilterReversed() throws Exception { try (ResultScanner scanner = getScanner(createReversedScanWithSparseFilter())) { int num = 0; Result r; while ((r = scanner.next()) != null) { if (num < (NUM_ROWS - 1) * NUM_FAMILIES * NUM_QUALIFIERS) { assertTrue(r.isCursor()); assertArrayEquals(ROWS[NUM_ROWS - 1 - num / NUM_FAMILIES / NUM_QUALIFIERS], r.getCursor().getRow()); } else { assertFalse(r.isCursor()); assertArrayEquals(ROWS[0], r.getRow()); } num++; } } }
@Test public void testSizeLimit() throws IOException { try (ResultScanner scanner = TEST_UTIL.getConnection().getTable(TABLE_NAME).getScanner(createScanWithSizeLimit())) { int num = 0; Result r; while ((r = scanner.next()) != null) { if (num % (NUM_FAMILIES * NUM_QUALIFIERS) != (NUM_FAMILIES * NUM_QUALIFIERS) - 1) { assertTrue(r.isCursor()); assertArrayEquals(ROWS[num / NUM_FAMILIES / NUM_QUALIFIERS], r.getCursor().getRow()); } else { assertFalse(r.isCursor()); assertArrayEquals(ROWS[num / NUM_FAMILIES / NUM_QUALIFIERS], r.getRow()); } num++; } } } }