@Override public ClosableIterator<RowResult<Value>> getRange(TableReference tableRef, RangeRequest rangeRequest, long timestamp) { return delegate1.getRange(tableRef, rangeRequest, timestamp); }
@Override public ClosableIterator<RowResult<Value>> getRange(TableReference tableRef, RangeRequest rangeRequest, long timestamp) { // No tracing, as we just return a lazy iterator and don't perform any calls to the backing KVS. return delegate().getRange(tableRef, rangeRequest, timestamp); }
@Override public ClosableIterator<RowResult<Value>> getRange(TableReference tableRef, RangeRequest rangeRequest, long timestamp) { return delegate().getRange(tableRef, rangeRequest, timestamp); }
@Override public ClosableIterator<RowResult<Value>> getRange(TableReference tableRef, RangeRequest rangeRequest, long timestamp) { return getDelegate(tableRef).getRange(tableRef, rangeRequest, timestamp); }
@VisibleForTesting Set<LockEntry> allLockEntries() { Set<RowResult<Value>> results = ImmutableSet.copyOf(keyValueService.getRange( AtlasDbConstants.PERSISTED_LOCKS_TABLE, RangeRequest.all(), AtlasDbConstants.TRANSACTION_TS + 1)); return results.stream().map(LockEntry::fromRowResult).collect(Collectors.toSet()); }
private ClosableIterator<RowResult<Value>> getValues(TableReference tableRef, RangeRequest range, long sweepTs, boolean checkIfLatestValueIsEmpty) { if (checkIfLatestValueIsEmpty) { return keyValueService.getRange(tableRef, range, sweepTs); } else { return ClosableIterators.emptyImmutableClosableIterator(); } }
private Set<Cell> getAllCells(TableReference tableRef) { try (ClosableIterator<RowResult<Value>> iterator = kvs.get() .getRange(tableRef, RangeRequest.all(), Long.MAX_VALUE)) { return iterator.stream() .map(RowResult::getCells) .flatMap(Streams::stream) .map(Map.Entry::getKey) .collect(Collectors.toSet()); } }
@Override public ClosableIterator<RowResult<Value>> getRange(TableReference tableRef, RangeRequest rangeRequest, long timestamp) { try { return delegate().getRange(tableMapper.getMappedTableName(tableRef), rangeRequest, timestamp); } catch (TableMappingNotFoundException e) { throw new IllegalArgumentException(e); } }
private void checkThatTableIsNowOnly(byte[]... rows) { List<byte[]> keys = Lists.newArrayList(); keyValueService.getRange(TEST_TABLE, RangeRequest.all(), AtlasDbConstants.MAX_TS) .forEachRemaining(row -> keys.add(row.getRowName())); assertTrue(Arrays.deepEquals(keys.toArray(), rows)); }
@Override public ClosableIterator<RowResult<Value>> getRange(TableReference tableRef, RangeRequest rangeRequest, long timestamp) { return maybeLog(() -> delegate.getRange(tableRef, rangeRequest, timestamp), logTimeAndTableRange("getRange", tableRef, rangeRequest)); }
@Test public void testKeyValueRangeWithDeletes() { putDirect("row1", "col1", "", 0); ImmutableList<RowResult<Value>> list = ImmutableList.copyOf(keyValueService.getRange(TEST_TABLE, RangeRequest.builder().build(), 1)); assertEquals(1, list.size()); RowResult<Value> row = list.iterator().next(); assertEquals(1, row.getColumns().size()); }
@Test public void testGetRangeThrowsOnError() { try { keyValueService.getRange(TEST_NONEXISTING_TABLE, RangeRequest.all(), AtlasDbConstants.MAX_TS).hasNext(); Assert.fail("getRange must throw on failure"); } catch (RuntimeException e) { // Expected } }
@Test public void testKeyValueRangesMany3() { putDirect("row1", "col1", "", 0); putDirect("row2", "col1", "", 0); putDirect("row2", "col2", "", 0); RangeRequest allRange = RangeRequest.builder().prefixRange("row1".getBytes()).batchHint(3).build(); for (int i = 0 ; i < 1000 ; i++) { ClosableIterator<RowResult<Value>> range = keyValueService.getRange(TEST_TABLE, allRange, 1); ImmutableList<RowResult<Value>> list = ImmutableList.copyOf(range); assertEquals(1, list.size()); } }
@Override public ClosableIterator<RowResult<Value>> getBatch(int batchSize, @Nullable byte[] lastToken) { RangeRequest.Builder newRange = range.getBuilder(); if (lastToken != null) { newRange.startRowInclusive(RangeRequests.getNextStartRow(range.isReverse(), lastToken)); } newRange.batchHint(batchSize); return keyValueService.getRange(tableRef, newRange.build(), timestamp); }
@Test public void testKeyValueEmptyRange() { putDirect("row1", "col1", "v1", 0); byte[] rowBytes = PtBytes.toBytes("row1"); ImmutableList<RowResult<Value>> list = ImmutableList.copyOf(keyValueService.getRange(TEST_TABLE, RangeRequest.builder().startRowInclusive(rowBytes).endRowExclusive(rowBytes).build(), 1)); assertTrue(list.isEmpty()); }
@Test public void testKeyValueRangesMany2() { putDirect("row1", "col1", "", 0); putDirect("row2", "col1", "", 0); putDirect("row2", "col2", "", 0); RangeRequest allRange = RangeRequest.builder().batchHint(3).build(); for (int i = 0 ; i < 1000 ; i++) { ClosableIterator<RowResult<Value>> range = keyValueService.getRange(TEST_TABLE, allRange, 1); ImmutableList<RowResult<Value>> list = ImmutableList.copyOf(range); assertEquals(2, list.size()); } }
@Test public void testRangeBatchSizeOne() { RangeRequest range = RangeRequest.builder().batchHint(1).build(); ClosableIterator<RowResult<Value>> ranges = keyValueService.getRange(TEST_TABLE, range, 1); assertEquals(false, ranges.hasNext()); }
private byte[] getOnlyItemInTableRange() { try (ClosableIterator<RowResult<Value>> rangeIterator = keyValueService.getRange(TEST_TABLE, RangeRequest.all(), TEST_TIMESTAMP + 3)) { byte[] contents = rangeIterator.next().getOnlyColumnValue().getContents(); assertFalse("There should only be one row in the table", rangeIterator.hasNext()); return contents; } }
@Test public void doesNotLeaveSentinelsIfTableDestroyed() { enqueueWriteCommitted(TABLE_CONS, 10); immutableTs = 11; unreadableTs = 11; spiedKvs.truncateTable(TABLE_CONS); assertThat(spiedKvs.getRange(TABLE_CONS, RangeRequest.all(), Long.MAX_VALUE)).isEmpty(); sweepQueue.sweepNextBatch(ShardAndStrategy.conservative(CONS_SHARD)); assertThat(spiedKvs.getRange(TABLE_CONS, RangeRequest.all(), Long.MAX_VALUE)).isEmpty(); }
@Test public void fromRowResultProducesLockEntry() { KeyValueService kvs = new InMemoryKeyValueService(false); kvs.createTable(TEST_TABLE, AtlasDbConstants.GENERIC_TABLE_METADATA); kvs.checkAndSet(CheckAndSetRequest.newCell(TEST_TABLE, LOCK_ENTRY.cell(), LOCK_ENTRY.value())); Iterator<RowResult<Value>> range = kvs.getRange(TEST_TABLE, RangeRequest.all(), AtlasDbConstants.TRANSACTION_TS + 1); RowResult<Value> onlyEntry = Iterables.getOnlyElement(ImmutableSet.copyOf(range)); LockEntry lockEntry = LockEntry.fromRowResult(onlyEntry); assertEquals(LOCK_ENTRY, lockEntry); }