/** * Updates the persisted number of shards to newNumber, if newNumber is greater than the currently persisted number * of shards. * * @param newNumber the desired new number of shards * @return the latest known persisted number of shards, which may be greater than newNumber */ public int updateNumberOfShards(int newNumber) { Preconditions.checkArgument(newNumber <= AtlasDbConstants.MAX_SWEEP_QUEUE_SHARDS); return (int) increaseValueFromToAtLeast(SHARD_COUNT_SAS, getNumberOfShards(), newNumber); }
@Test public void enqueueUpdatesNumberOfShards() { assertThat(AtlasDbConstants.DEFAULT_SWEEP_QUEUE_SHARDS).isLessThan(DEFAULT_SHARDS); assertThat(progress.getNumberOfShards()).isEqualTo(AtlasDbConstants.DEFAULT_SWEEP_QUEUE_SHARDS); enqueueWriteCommitted(TABLE_CONS, LOW_TS); assertThat(progress.getNumberOfShards()).isEqualTo(DEFAULT_SHARDS); }
@Test public void canReadInitialNumberOfShards() { assertThat(progress.getNumberOfShards()).isEqualTo(AtlasDbConstants.DEFAULT_SWEEP_QUEUE_SHARDS); }
@Test public void testConfigHigherValuePersistedInProgress() { assertThat(setRuntimeAndGetNumShards(50)).isEqualTo(50); assertThat(progress.getNumberOfShards()).isEqualTo(50); }
@Test public void cannotUpdateNumberOfShardsToZero() { progress.updateNumberOfShards(0); assertThat(progress.getNumberOfShards()).isEqualTo(AtlasDbConstants.DEFAULT_SWEEP_QUEUE_SHARDS); }
@Test public void canUpdateNumberOfShards() { progress.updateNumberOfShards(128); assertThat(progress.getNumberOfShards()).isEqualTo(128); }
@Test public void canIncreaseNumberOfShardsToMax() { progress.updateNumberOfShards(AtlasDbConstants.MAX_SWEEP_QUEUE_SHARDS); assertThat(progress.getNumberOfShards()).isEqualTo(AtlasDbConstants.MAX_SWEEP_QUEUE_SHARDS); }
@Test public void updatingTimestampsDoesNotAffectShardsAndViceVersa() { assertThat(progress.getNumberOfShards()).isEqualTo(AtlasDbConstants.DEFAULT_SWEEP_QUEUE_SHARDS); assertThat(progress.getLastSweptTimestamp(CONSERVATIVE_TEN)).isEqualTo(INITIAL_TIMESTAMP); assertThat(progress.getLastSweptTimestamp(THOROUGH_TEN)).isEqualTo(INITIAL_TIMESTAMP); progress.updateNumberOfShards(64); progress.updateLastSweptTimestamp(CONSERVATIVE_TEN, 32L); progress.updateLastSweptTimestamp(THOROUGH_TEN, 128L); assertThat(progress.getNumberOfShards()).isEqualTo(64); assertThat(progress.getLastSweptTimestamp(CONSERVATIVE_TEN)).isEqualTo(32L); assertThat(progress.getLastSweptTimestamp(THOROUGH_TEN)).isEqualTo(128L); }
@Test public void attemptingToDecreaseNumberOfShardsIsNoop() { progress.updateNumberOfShards(64); progress.updateNumberOfShards(32); assertThat(progress.getNumberOfShards()).isEqualTo(64); }
@Test public void canUpgradeNumberOfShardsIfPersistedDefaultValue() { byte[] defaultValue = ShardProgress.createColumnValue(AtlasDbConstants.DEFAULT_SWEEP_QUEUE_SHARDS); CheckAndSetRequest request = progress.createNewCellRequest(ShardProgress.SHARD_COUNT_SAS, defaultValue); kvs.checkAndSet(request); progress.updateNumberOfShards(128); assertThat(progress.getNumberOfShards()).isEqualTo(128); }
/** * Updates the persisted number of shards to newNumber, if newNumber is greater than the currently persisted number * of shards. * * @param newNumber the desired new number of shards * @return the latest known persisted number of shards, which may be greater than newNumber */ public int updateNumberOfShards(int newNumber) { Preconditions.checkArgument(newNumber <= AtlasDbConstants.MAX_SWEEP_QUEUE_SHARDS); return (int) increaseValueFromToAtLeast(SHARD_COUNT_SAS, getNumberOfShards(), newNumber); }