private SweepableTimestampsTable.SweepableTimestampsRow computeRow(PartitionInfo partitionInfo) { return SweepableTimestampsTable.SweepableTimestampsRow.of( partitionInfo.shard(), SweepQueueUtils.tsPartitionCoarse(partitionInfo.timestamp()), partitionInfo.isConservative().persistToBytes()); }
private PartitionInfo getPartitionInfo(WriteInfo write, int shards) { return PartitionInfo.of(write.toShard(shards), isConservative(write), write.timestamp()); }
public static ShardAndStrategy fromInfo(PartitionInfo info) { if (info.isConservative().isTrue()) { return ShardAndStrategy.conservative(info.shard()); } return ShardAndStrategy.thorough(info.shard()); } }
private SweepableCellsRow computeRow(PartitionInfo info, boolean isDedicatedRow, long dedicatedRowNumber) { TargetedSweepMetadata metadata = ImmutableTargetedSweepMetadata.builder() .conservative(info.isConservative().isTrue()) .dedicatedRow(isDedicatedRow) .shard(info.shard()) .dedicatedRowNumber(dedicatedRowNumber) .build(); long tsOrPartition = getTimestampOrPartition(info, isDedicatedRow); return SweepableCellsRow.of(tsOrPartition, metadata.persistToBytes()); }
private SweepableTimestampsTable.SweepableTimestampsColumn computeColumn(PartitionInfo info) { return SweepableTimestampsTable.SweepableTimestampsColumn.of(SweepQueueUtils.tsPartitionFine(info.timestamp())); }
@Test public void changingNumberOfPartitionsIsReflectedInPartitionInfo() { WriteInfo write = getWriteInfo(CONSERVATIVE, 1, 1, 100L); PartitionInfo partition1 = Iterables.getOnlyElement( partitioner.partitionWritesByShardStrategyTimestamp(ImmutableList.of(write)).keySet()); numShards += 1; PartitionInfo partition2 = Iterables.getOnlyElement( partitioner.partitionWritesByShardStrategyTimestamp(ImmutableList.of(write)).keySet()); assertThat(partition1.isConservative()).isEqualTo(partition2.isConservative()); assertThat(partition1.timestamp()).isEqualTo(partition2.timestamp()); assertThat(partition1.shard()).isNotEqualTo(partition2.shard()); }
public static ShardAndStrategy fromInfo(PartitionInfo info) { if (info.isConservative().isTrue()) { return ShardAndStrategy.conservative(info.shard()); } return ShardAndStrategy.thorough(info.shard()); } }
private Map<Cell, byte[]> addCell(PartitionInfo info, WriteReference writeRef, boolean isDedicatedRow, long dedicatedRowNumber, long writeIndex) { SweepableCellsRow row = computeRow(info, isDedicatedRow, dedicatedRowNumber); SweepableCellsColumnValue colVal = createColVal(info.timestamp(), writeIndex, writeRef); return ImmutableMap.of(SweepQueueUtils.toCell(row, colVal), colVal.persistValue()); }
@Test public void partitionWritesByShardStrategyTimestampGroupsOnShardClash() { List<WriteInfo> writes = new ArrayList<>(); for (int i = 0; i <= numShards; i++) { writes.add(getWriteInfoWithFixedCellHash(CONSERVATIVE, i)); } Map<PartitionInfo, List<WriteInfo>> partitions = partitioner.partitionWritesByShardStrategyTimestamp(writes); assertThat(partitions.keySet()) .containsExactly(PartitionInfo.of(writes.get(0).toShard(numShards), true, 1L)); assertThat(Iterables.getOnlyElement(partitions.values())).isEqualTo(writes); }
private SweepableTimestampsTable.SweepableTimestampsRow computeRow(PartitionInfo partitionInfo) { return SweepableTimestampsTable.SweepableTimestampsRow.of( partitionInfo.shard(), SweepQueueUtils.tsPartitionCoarse(partitionInfo.timestamp()), partitionInfo.isConservative().persistToBytes()); }
private SweepableCellsRow computeRow(PartitionInfo info, boolean isDedicatedRow, long dedicatedRowNumber) { TargetedSweepMetadata metadata = ImmutableTargetedSweepMetadata.builder() .conservative(info.isConservative().isTrue()) .dedicatedRow(isDedicatedRow) .shard(info.shard()) .dedicatedRowNumber(dedicatedRowNumber) .build(); long tsOrPartition = getTimestampOrPartition(info, isDedicatedRow); return SweepableCellsRow.of(tsOrPartition, metadata.persistToBytes()); }
private PartitionInfo getPartitionInfo(WriteInfo write, int shards) { return PartitionInfo.of(write.toShard(shards), isConservative(write), write.timestamp()); }
private SweepableTimestampsTable.SweepableTimestampsColumn computeColumn(PartitionInfo info) { return SweepableTimestampsTable.SweepableTimestampsColumn.of(SweepQueueUtils.tsPartitionFine(info.timestamp())); }
private Map<Cell, byte[]> addCell(PartitionInfo info, WriteReference writeRef, boolean isDedicatedRow, long dedicatedRowNumber, long writeIndex) { SweepableCellsRow row = computeRow(info, isDedicatedRow, dedicatedRowNumber); SweepableCellsColumnValue colVal = createColVal(info.timestamp(), writeIndex, writeRef); return ImmutableMap.of(SweepQueueUtils.toCell(row, colVal), colVal.persistValue()); }