Skip to content

Commit 2507026

Browse files
author
Yao Xiao
committed
recovery mode
1 parent 8422203 commit 2507026

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

fdbclient/ServerKnobs.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,7 @@ void ServerKnobs::initialize(Randomize randomize, ClientKnobs* clientKnobs, IsSi
464464
init( ROCKSDB_PHYSICAL_SHARD_CLEAN_UP_DELAY, isSimulated ? 10.0 : 300.0 ); // Delays shard clean up, must be larger than ROCKSDB_READ_VALUE_TIMEOUT to prevent reading deleted shard.
465465
init( ROCKSDB_RETURN_OVERLOADED_ON_TIMEOUT, false ); if ( randomize && BUGGIFY ) ROCKSDB_RETURN_OVERLOADED_ON_TIMEOUT = true;
466466
init( ROCKSDB_COMPACTION_PRI, 3 ); // kMinOverlappingRatio, RocksDB default.
467+
init( ROCKSDB_WAL_RECOVERY_MODE, 2 ); // kPointInTimeRecovery, RocksDB default.
467468

468469
// Leader election
469470
bool longLeaderElection = randomize && BUGGIFY;

fdbclient/include/fdbclient/ServerKnobs.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,7 @@ class ServerKnobs : public KnobsImpl<ServerKnobs> {
373373
double ROCKSDB_PHYSICAL_SHARD_CLEAN_UP_DELAY;
374374
bool ROCKSDB_RETURN_OVERLOADED_ON_TIMEOUT;
375375
int ROCKSDB_COMPACTION_PRI;
376+
int ROCKSDB_WAL_RECOVERY_MODE;
376377

377378
// Leader election
378379
int MAX_NOTIFICATIONS;

fdbserver/KeyValueStoreShardedRocksDB.actor.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,22 @@ rocksdb::CompactionPri getCompactionPriority() {
249249
}
250250
}
251251

252+
rocksdb::WALRecoveryMode getWalRecoveryMode() {
253+
switch (SERVER_KNOBS->ROCKSDB_WAL_RECOVERY_MODE) {
254+
case 0:
255+
return rocksdb::WALRecoveryMode::kTolerateCorruptedTailRecords;
256+
case 1:
257+
return rocksdb::WALRecoveryMode::kAbsoluteConsistency;
258+
case 2:
259+
return rocksdb::WALRecoveryMode::kPointInTimeRecovery;
260+
case 3:
261+
return rocksdb::WALRecoveryMode::kSkipAnyCorruptedRecords;
262+
default:
263+
TraceEvent(SevWarn, "InvalidWalRecoveryMode").detail("KnobValue", SERVER_KNOBS->ROCKSDB_WAL_RECOVERY_MODE);
264+
return rocksdb::WALRecoveryMode::kPointInTimeRecovery;
265+
}
266+
}
267+
252268
rocksdb::ColumnFamilyOptions getCFOptions() {
253269
rocksdb::ColumnFamilyOptions options;
254270
options.level_compaction_dynamic_level_bytes = SERVER_KNOBS->ROCKSDB_LEVEL_COMPACTION_DYNAMIC_LEVEL_BYTES;
@@ -331,6 +347,7 @@ rocksdb::Options getOptions() {
331347
options.IncreaseParallelism(SERVER_KNOBS->ROCKSDB_BACKGROUND_PARALLELISM);
332348
}
333349

350+
options.wal_recovery_mode = getWalRecoveryMode();
334351
options.delete_obsolete_files_period_micros = SERVER_KNOBS->ROCKSDB_DELETE_OBSOLETE_FILE_PERIOD * 1000000;
335352
options.max_total_wal_size = SERVER_KNOBS->ROCKSDB_MAX_TOTAL_WAL_SIZE;
336353
options.max_subcompactions = SERVER_KNOBS->ROCKSDB_MAX_SUBCOMPACTIONS;

0 commit comments

Comments
 (0)