Skip to content

Commit 3c07bb5

Browse files
committed
Mitigate rocksdb external timeout in AtomicBackupToDBCorrectness test (apple#12187)
* fix rocksdb external timeout * address comments
1 parent b933c8a commit 3c07bb5

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);
@@ -12902,7 +12904,8 @@ ACTOR Future<Void> updateStorage(StorageServer* data) {
1290212904
state Version newOldestVersion = data->storageVersion();
1290312905
state Version desiredVersion = data->desiredOldestVersion.get();
1290412906
state int64_t bytesLeft = SERVER_KNOBS->STORAGE_COMMIT_BYTES;
12905-
state int64_t clearRangesLeft = data->storage.getKeyValueStoreType() == KeyValueStoreType::SSD_ROCKSDB_V1
12907+
state int64_t clearRangesLeft = (data->storage.getKeyValueStoreType() == KeyValueStoreType::SSD_ROCKSDB_V1 ||
12908+
data->storage.getKeyValueStoreType() == KeyValueStoreType::SSD_SHARDED_ROCKSDB)
1290612909
? (SERVER_KNOBS->ROCKSDB_CLEARRANGES_LIMIT_PER_COMMIT > 0
1290712910
? SERVER_KNOBS->ROCKSDB_CLEARRANGES_LIMIT_PER_COMMIT
1290812911
: INT_MAX)
@@ -12981,12 +12984,22 @@ ACTOR Future<Void> updateStorage(StorageServer* data) {
1298112984
}
1298212985
}
1298312986

12987+
// When unlimitedCommitBytes is set to true, clearRangesLeft will be ignored.
12988+
// Make sure unlimitedCommitBytes is set to True only when storage engine is sharded rocksdb.
12989+
ASSERT(data->shardAware || unlimitedCommitBytes == UnlimitedCommitBytes::False);
12990+
1298412991
// Write mutations to storage until we reach the desiredVersion or have written too much (bytesleft)
1298512992
// or until we reach clearRanges limit, in case of rocksdb.
1298612993
state double beforeStorageUpdates = now();
1298712994
loop {
12988-
state bool done = data->storage.makeVersionMutationsDurable(
12989-
newOldestVersion, desiredVersion, bytesLeft, unlimitedCommitBytes, clearRangesLeft);
12995+
state bool done = data->storage.makeVersionMutationsDurable(newOldestVersion,
12996+
desiredVersion,
12997+
bytesLeft,
12998+
unlimitedCommitBytes,
12999+
clearRangesLeft,
13000+
data->thisServerID,
13001+
data->storage.getKeyValueStoreType() ==
13002+
KeyValueStoreType::SSD_ROCKSDB_V1);
1299013003
if (data->tenantMap.getLatestVersion() < newOldestVersion) {
1299113004
data->tenantMap.createNewVersion(newOldestVersion);
1299213005
}
@@ -13574,10 +13587,21 @@ bool StorageServerDisk::makeVersionMutationsDurable(Version& prevStorageVersion,
1357413587
Version newStorageVersion,
1357513588
int64_t& bytesLeft,
1357613589
UnlimitedCommitBytes unlimitedCommitBytes,
13577-
int64_t& clearRangesLeft) {
13578-
if ((!unlimitedCommitBytes && bytesLeft <= 0) || clearRangesLeft <= 0)
13590+
int64_t& clearRangesLeft,
13591+
const UID& ssId,
13592+
bool verbose) {
13593+
if (!unlimitedCommitBytes && (bytesLeft <= 0 || clearRangesLeft <= 0))
1357913594
return true;
1358013595

13596+
if (clearRangesLeft <= 0 && verbose) {
13597+
TraceEvent(SevInfo, "MakeVersionMutationsDurableClearRangesLeftZero", ssId)
13598+
.suppressFor(5.0)
13599+
.detail("PrevStorageVersion", prevStorageVersion)
13600+
.detail("NewStorageVersion", newStorageVersion)
13601+
.detail("BytesLeft", bytesLeft)
13602+
.detail("ClearRangesLeft", clearRangesLeft)
13603+
.detail("UnlimitedCommitBytes", unlimitedCommitBytes);
13604+
}
1358113605
// Apply mutations from the mutationLog
1358213606
auto u = data->getMutationLog().upper_bound(prevStorageVersion);
1358313607
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)