Skip to content

Commit 42dd9ef

Browse files
authored
Mitigate rocksdb external timeout in AtomicBackupToDBCorrectness test (#12187)
* fix rocksdb external timeout * address comments
1 parent 12176bf commit 42dd9ef

File tree

3 files changed

+34
-10
lines changed

3 files changed

+34
-10
lines changed

fdbclient/ServerKnobs.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ void ServerKnobs::initialize(Randomize randomize, ClientKnobs* clientKnobs, IsSi
559559
init( ROCKSDB_SINGLEKEY_DELETES_MAX, 200 ); // Max rocksdb::delete calls in a transaction
560560
init( ROCKSDB_ENABLE_CLEAR_RANGE_EAGER_READS, false );
561561
init( ROCKSDB_FORCE_DELETERANGE_FOR_CLEARRANGE, false );
562-
init( ROCKSDB_CLEARRANGES_LIMIT_PER_COMMIT, 0 ); if( isSimulated ) ROCKSDB_CLEARRANGES_LIMIT_PER_COMMIT = deterministicRandom()->randomInt(1000, 10000); // Default: 0 (disabled).
562+
init( ROCKSDB_CLEARRANGES_LIMIT_PER_COMMIT, 0 ); if( isSimulated ) ROCKSDB_CLEARRANGES_LIMIT_PER_COMMIT = deterministicRandom()->randomInt(200, 500); // Default: 0 (disabled).
563563
// ROCKSDB_STATS_LEVEL=1 indicates rocksdb::StatsLevel::kExceptHistogramOrTimers
564564
// Refer StatsLevel: https://github.com/facebook/rocksdb/blob/main/include/rocksdb/statistics.h#L594
565565
init( ROCKSDB_STATS_LEVEL, 1 );
@@ -627,7 +627,7 @@ void ServerKnobs::initialize(Randomize randomize, ClientKnobs* clientKnobs, IsSi
627627
init( SHARDED_ROCKSDB_VALIDATE_MAPPING_RATIO, 0.01 ); if (isSimulated) SHARDED_ROCKSDB_VALIDATE_MAPPING_RATIO = deterministicRandom()->random01();
628628
init( SHARD_METADATA_SCAN_BYTES_LIMIT, 10485760 ); // 10MB
629629
init( ROCKSDB_MAX_MANIFEST_FILE_SIZE, 100 << 20 ); if (isSimulated) ROCKSDB_MAX_MANIFEST_FILE_SIZE = 500 << 20; // 500MB in simulation
630-
init( SHARDED_ROCKSDB_MEMTABLE_MAX_RANGE_DELETIONS, 500 ); if (isSimulated) SHARDED_ROCKSDB_MEMTABLE_MAX_RANGE_DELETIONS = 50;
630+
init( SHARDED_ROCKSDB_MEMTABLE_MAX_RANGE_DELETIONS, 500 ); if (isSimulated) SHARDED_ROCKSDB_MEMTABLE_MAX_RANGE_DELETIONS = 5;
631631
init( SHARDED_ROCKSDB_AVERAGE_FILE_SIZE, 8 << 20 ); // 8MB
632632
init( SHARDED_ROCKSDB_COMPACTION_PERIOD, isSimulated? 3600 : 2592000 ); // 30d
633633
init( SHARDED_ROCKSDB_COMPACTION_ACTOR_DELAY, 3600 ); // 1h

fdbserver/storageserver.actor.cpp

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,9 @@ struct StorageServerDisk {
599599
Version newStorageVersion,
600600
int64_t& bytesLeft,
601601
UnlimitedCommitBytes unlimitedCommitBytes,
602-
int64_t& clearRangesLeft);
602+
int64_t& clearRangesLeft,
603+
const UID& ssId,
604+
bool verbose = false);
603605
void makeVersionDurable(Version version);
604606
void makeAccumulativeChecksumDurable(const AccumulativeChecksumState& acsState);
605607
void clearAccumulativeChecksumState(const AccumulativeChecksumState& acsState);
@@ -12908,7 +12910,8 @@ ACTOR Future<Void> updateStorage(StorageServer* data) {
1290812910
state Version newOldestVersion = data->storageVersion();
1290912911
state Version desiredVersion = data->desiredOldestVersion.get();
1291012912
state int64_t bytesLeft = SERVER_KNOBS->STORAGE_COMMIT_BYTES;
12911-
state int64_t clearRangesLeft = data->storage.getKeyValueStoreType() == KeyValueStoreType::SSD_ROCKSDB_V1
12913+
state int64_t clearRangesLeft = (data->storage.getKeyValueStoreType() == KeyValueStoreType::SSD_ROCKSDB_V1 ||
12914+
data->storage.getKeyValueStoreType() == KeyValueStoreType::SSD_SHARDED_ROCKSDB)
1291212915
? (SERVER_KNOBS->ROCKSDB_CLEARRANGES_LIMIT_PER_COMMIT > 0
1291312916
? SERVER_KNOBS->ROCKSDB_CLEARRANGES_LIMIT_PER_COMMIT
1291412917
: INT_MAX)
@@ -12987,12 +12990,22 @@ ACTOR Future<Void> updateStorage(StorageServer* data) {
1298712990
}
1298812991
}
1298912992

12993+
// When unlimitedCommitBytes is set to true, clearRangesLeft will be ignored.
12994+
// Make sure unlimitedCommitBytes is set to True only when storage engine is sharded rocksdb.
12995+
ASSERT(data->shardAware || unlimitedCommitBytes == UnlimitedCommitBytes::False);
12996+
1299012997
// Write mutations to storage until we reach the desiredVersion or have written too much (bytesleft)
1299112998
// or until we reach clearRanges limit, in case of rocksdb.
1299212999
state double beforeStorageUpdates = now();
1299313000
loop {
12994-
state bool done = data->storage.makeVersionMutationsDurable(
12995-
newOldestVersion, desiredVersion, bytesLeft, unlimitedCommitBytes, clearRangesLeft);
13001+
state bool done = data->storage.makeVersionMutationsDurable(newOldestVersion,
13002+
desiredVersion,
13003+
bytesLeft,
13004+
unlimitedCommitBytes,
13005+
clearRangesLeft,
13006+
data->thisServerID,
13007+
data->storage.getKeyValueStoreType() ==
13008+
KeyValueStoreType::SSD_ROCKSDB_V1);
1299613009
if (data->tenantMap.getLatestVersion() < newOldestVersion) {
1299713010
data->tenantMap.createNewVersion(newOldestVersion);
1299813011
}
@@ -13580,10 +13593,21 @@ bool StorageServerDisk::makeVersionMutationsDurable(Version& prevStorageVersion,
1358013593
Version newStorageVersion,
1358113594
int64_t& bytesLeft,
1358213595
UnlimitedCommitBytes unlimitedCommitBytes,
13583-
int64_t& clearRangesLeft) {
13584-
if ((!unlimitedCommitBytes && bytesLeft <= 0) || clearRangesLeft <= 0)
13596+
int64_t& clearRangesLeft,
13597+
const UID& ssId,
13598+
bool verbose) {
13599+
if (!unlimitedCommitBytes && (bytesLeft <= 0 || clearRangesLeft <= 0))
1358513600
return true;
1358613601

13602+
if (clearRangesLeft <= 0 && verbose) {
13603+
TraceEvent(SevInfo, "MakeVersionMutationsDurableClearRangesLeftZero", ssId)
13604+
.suppressFor(5.0)
13605+
.detail("PrevStorageVersion", prevStorageVersion)
13606+
.detail("NewStorageVersion", newStorageVersion)
13607+
.detail("BytesLeft", bytesLeft)
13608+
.detail("ClearRangesLeft", clearRangesLeft)
13609+
.detail("UnlimitedCommitBytes", unlimitedCommitBytes);
13610+
}
1358713611
// Apply mutations from the mutationLog
1358813612
auto u = data->getMutationLog().upper_bound(prevStorageVersion);
1358913613
if (u != data->getMutationLog().end() && u->first <= newStorageVersion) {

tests/fast/AtomicBackupToDBCorrectness.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ simBackupAgents = 'BackupToDB'
1010

1111
[[test.workload]]
1212
testName = 'AtomicOps'
13-
nodeCount = 30000
14-
transactionsPerSecond = 2500.0
13+
nodeCount = 10000
14+
transactionsPerSecond = 750.0
1515
testDuration = 30.0
1616

1717
[[test.workload]]

0 commit comments

Comments
 (0)