summaryrefslogtreecommitdiff
path: root/src/mongo/db/mongod_main.cpp
diff options
context:
space:
mode:
authorGregory Wlodarek <gregory.wlodarek@mongodb.com>2022-04-22 19:42:03 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-04-22 20:12:32 +0000
commit90d6271d2f663a4aaf633de5e362972e50e90c21 (patch)
treed24da0cee090d7d92972fa8f43fa4f0eb41ac915 /src/mongo/db/mongod_main.cpp
parent983a7174c6d792049ef0f54e36a55f93801df89c (diff)
downloadmongo-90d6271d2f663a4aaf633de5e362972e50e90c21.tar.gz
SERVER-60761 Move the global read-only flag to be an OperationContext function
Diffstat (limited to 'src/mongo/db/mongod_main.cpp')
-rw-r--r--src/mongo/db/mongod_main.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/mongo/db/mongod_main.cpp b/src/mongo/db/mongod_main.cpp
index bce1bc1815c..94aaa958448 100644
--- a/src/mongo/db/mongod_main.cpp
+++ b/src/mongo/db/mongod_main.cpp
@@ -389,6 +389,13 @@ ExitCode _initAndListen(ServiceContext* serviceContext, int listenPort) {
auto runner = makePeriodicRunner(serviceContext);
serviceContext->setPeriodicRunner(std::move(runner));
+ // When starting the server with --queryableBackupMode or --recoverFromOplogAsStandalone, we are
+ // in read-only mode and don't allow user-originating operations to perform writes
+ if (storageGlobalParams.queryableBackupMode ||
+ repl::ReplSettings::shouldRecoverFromOplogAsStandalone()) {
+ serviceContext->disallowUserWrites();
+ }
+
#ifdef MONGO_CONFIG_SSL
OCSPManager::start(serviceContext);
CertificateExpirationMonitor::get()->start(serviceContext);
@@ -650,7 +657,7 @@ ExitCode _initAndListen(ServiceContext* serviceContext, int listenPort) {
readWriteConcernDefaultsMongodStartupChecks(startupOpCtx.get());
// Perform replication recovery for queryable backup mode if needed.
- if (storageGlobalParams.readOnly) {
+ if (storageGlobalParams.queryableBackupMode) {
uassert(ErrorCodes::BadValue,
str::stream() << "Cannot specify both queryableBackupMode and "
<< "recoverFromOplogAsStandalone at the same time",
@@ -673,7 +680,7 @@ ExitCode _initAndListen(ServiceContext* serviceContext, int listenPort) {
replCoord->startup(startupOpCtx.get(), lastShutdownState);
}
- if (!storageGlobalParams.readOnly) {
+ if (!storageGlobalParams.queryableBackupMode) {
if (storageEngine->supportsCappedCollections()) {
logStartup(startupOpCtx.get());