@@ -599,7 +599,9 @@ struct StorageServerDisk {
599
599
Version newStorageVersion,
600
600
int64_t& bytesLeft,
601
601
UnlimitedCommitBytes unlimitedCommitBytes,
602
- int64_t& clearRangesLeft);
602
+ int64_t& clearRangesLeft,
603
+ const UID& ssId,
604
+ bool verbose = false);
603
605
void makeVersionDurable(Version version);
604
606
void makeAccumulativeChecksumDurable(const AccumulativeChecksumState& acsState);
605
607
void clearAccumulativeChecksumState(const AccumulativeChecksumState& acsState);
@@ -12902,7 +12904,8 @@ ACTOR Future<Void> updateStorage(StorageServer* data) {
12902
12904
state Version newOldestVersion = data->storageVersion();
12903
12905
state Version desiredVersion = data->desiredOldestVersion.get();
12904
12906
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)
12906
12909
? (SERVER_KNOBS->ROCKSDB_CLEARRANGES_LIMIT_PER_COMMIT > 0
12907
12910
? SERVER_KNOBS->ROCKSDB_CLEARRANGES_LIMIT_PER_COMMIT
12908
12911
: INT_MAX)
@@ -12981,12 +12984,22 @@ ACTOR Future<Void> updateStorage(StorageServer* data) {
12981
12984
}
12982
12985
}
12983
12986
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
+
12984
12991
// Write mutations to storage until we reach the desiredVersion or have written too much (bytesleft)
12985
12992
// or until we reach clearRanges limit, in case of rocksdb.
12986
12993
state double beforeStorageUpdates = now();
12987
12994
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);
12990
13003
if (data->tenantMap.getLatestVersion() < newOldestVersion) {
12991
13004
data->tenantMap.createNewVersion(newOldestVersion);
12992
13005
}
@@ -13574,10 +13587,21 @@ bool StorageServerDisk::makeVersionMutationsDurable(Version& prevStorageVersion,
13574
13587
Version newStorageVersion,
13575
13588
int64_t& bytesLeft,
13576
13589
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))
13579
13594
return true;
13580
13595
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
+ }
13581
13605
// Apply mutations from the mutationLog
13582
13606
auto u = data->getMutationLog().upper_bound(prevStorageVersion);
13583
13607
if (u != data->getMutationLog().end() && u->first <= newStorageVersion) {
0 commit comments