summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBenety Goh <benety@mongodb.com>2020-12-17 23:17:16 -0500
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-12-18 05:32:04 +0000
commit4e9450a64404a555941b9898e71611f3a7c0766d (patch)
tree686e4b2b670a27b7464e5e99bfffb169b7fa82fd /src
parent588641966ea52f25ab09a64969b443fcf8e737b4 (diff)
downloadmongo-4e9450a64404a555941b9898e71611f3a7c0766d.tar.gz
SERVER-51918 create feature flag for lock free reads
Diffstat (limited to 'src')
-rw-r--r--src/mongo/db/SConscript1
-rw-r--r--src/mongo/db/mongod_options.cpp6
-rw-r--r--src/mongo/db/storage/storage_options.h2
-rw-r--r--src/mongo/db/storage/storage_parameters.idl9
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