diff options
author | Benety Goh <benety@mongodb.com> | 2020-12-17 23:17:16 -0500 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-12-18 05:32:04 +0000 |
commit | 4e9450a64404a555941b9898e71611f3a7c0766d (patch) | |
tree | 686e4b2b670a27b7464e5e99bfffb169b7fa82fd /src | |
parent | 588641966ea52f25ab09a64969b443fcf8e737b4 (diff) | |
download | mongo-4e9450a64404a555941b9898e71611f3a7c0766d.tar.gz |
SERVER-51918 create feature flag for lock free reads
Diffstat (limited to 'src')
-rw-r--r-- | src/mongo/db/SConscript | 1 | ||||
-rw-r--r-- | src/mongo/db/mongod_options.cpp | 6 | ||||
-rw-r--r-- | src/mongo/db/storage/storage_options.h | 2 | ||||
-rw-r--r-- | src/mongo/db/storage/storage_parameters.idl | 9 |
4 files changed, 12 insertions, 6 deletions
diff --git a/src/mongo/db/SConscript b/src/mongo/db/SConscript index a3265eacdeb..e7c7382705a 100644 --- a/src/mongo/db/SConscript +++ b/src/mongo/db/SConscript @@ -385,6 +385,7 @@ env.Library( '$BUILD_DIR/mongo/db/repl/repl_settings', '$BUILD_DIR/mongo/db/repl/replica_set_messages', '$BUILD_DIR/mongo/db/storage/storage_options', + '$BUILD_DIR/mongo/idl/feature_flag', '$BUILD_DIR/mongo/util/options_parser/options_parser', 'global_settings', 'server_options_base', diff --git a/src/mongo/db/mongod_options.cpp b/src/mongo/db/mongod_options.cpp index 5b60719af64..bc436427d07 100644 --- a/src/mongo/db/mongod_options.cpp +++ b/src/mongo/db/mongod_options.cpp @@ -54,6 +54,7 @@ #include "mongo/db/server_options_base.h" #include "mongo/db/server_options_nongeneral_gen.h" #include "mongo/db/server_options_server_helpers.h" +#include "mongo/db/storage/storage_parameters_gen.h" #include "mongo/logv2/log.h" #include "mongo/logv2/log_domain_global.h" #include "mongo/logv2/log_manager.h" @@ -481,6 +482,11 @@ Status storeMongodOptions(const moe::Environment& params) { storageGlobalParams.noTableScan.store(params["notablescan"].as<bool>()); } + // Initialize lock-free reads support from feature flag. This may be adjusted later based on + // replica set config. + storageGlobalParams.disableLockFreeReads = + !feature_flags::gLockFreeReads.isEnabledAndIgnoreFCV(); + repl::ReplSettings replSettings; if (params.count("replication.replSet")) { /* seed list of hosts for the repl set */ diff --git a/src/mongo/db/storage/storage_options.h b/src/mongo/db/storage/storage_options.h index e7fe5331f96..8de0425455b 100644 --- a/src/mongo/db/storage/storage_options.h +++ b/src/mongo/db/storage/storage_options.h @@ -122,7 +122,7 @@ struct StorageGlobalParams { // Disables lock-free reads, adjustable via setParameter. Can be disabled by certain user // settings with which lock-free reads are incompatible: standalone mode; and // enableMajorityReadConcern=false. - bool disableLockFreeReads; + bool disableLockFreeReads = true; // Delay in seconds between triggering the next checkpoint after the completion of the previous // one. A value of 0 indicates that checkpointing will be skipped. diff --git a/src/mongo/db/storage/storage_parameters.idl b/src/mongo/db/storage/storage_parameters.idl index 68db905d4ae..9a35d61be07 100644 --- a/src/mongo/db/storage/storage_parameters.idl +++ b/src/mongo/db/storage/storage_parameters.idl @@ -78,13 +78,12 @@ server_parameters: default: 2048 validator: gte: 1 - disableLockFreeReads: - description: "Disables the lock-free reads feature." - set_at: [ startup ] - cpp_varname: 'storageGlobalParams.disableLockFreeReads' - default: true feature_flags: + featureFlagLockFreeReads: + description: "Support for lock-free reads." + cpp_varname: feature_flags::gLockFreeReads + default: false featureFlagTimeseriesCollection: description: "When enabled, support for time-series collections" cpp_varname: feature_flags::gTimeseriesCollection |