summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAntonio Fuschetto <antonio.fuschetto@mongodb.com>2022-08-29 15:55:53 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-08-29 17:02:46 +0000
commitcf84bec54627ba1efb6aebd829f6b3d11aaf112e (patch)
treef9fbfc0b0987e51d656c18944a23071cf51eefb7 /src
parent6e7e2e4f20364ce9ae0240860afa03649bb1c680 (diff)
downloadmongo-cf84bec54627ba1efb6aebd829f6b3d11aaf112e.tar.gz
SERVER-68541 Concurrent removeShard and movePrimary may delete unsharded collections
Diffstat (limited to 'src')
-rw-r--r--src/mongo/db/s/config/configsvr_commit_move_primary_command.cpp5
-rw-r--r--src/mongo/db/s/config/sharding_catalog_manager_database_operations.cpp7
2 files changed, 4 insertions, 8 deletions
diff --git a/src/mongo/db/s/config/configsvr_commit_move_primary_command.cpp b/src/mongo/db/s/config/configsvr_commit_move_primary_command.cpp
index 2af0641cece..a66e8f0e3ff 100644
--- a/src/mongo/db/s/config/configsvr_commit_move_primary_command.cpp
+++ b/src/mongo/db/s/config/configsvr_commit_move_primary_command.cpp
@@ -49,9 +49,12 @@ public:
void typedRun(OperationContext* opCtx) {
uassert(ErrorCodes::IllegalOperation,
- str::stream() << request().kCommandName << " can only be run on config servers",
+ str::stream() << Request::kCommandName << " can only be run on config servers",
serverGlobalParams.clusterRole == ClusterRole::ConfigServer);
+ CommandHelpers::uassertCommandRunWithMajority(Request::kCommandName,
+ opCtx->getWriteConcern());
+
// Set the operation context read concern level to local for reads into the config
// database.
repl::ReadConcernArgs::get(opCtx) =
diff --git a/src/mongo/db/s/config/sharding_catalog_manager_database_operations.cpp b/src/mongo/db/s/config/sharding_catalog_manager_database_operations.cpp
index a607cba89ff..c3bb155e702 100644
--- a/src/mongo/db/s/config/sharding_catalog_manager_database_operations.cpp
+++ b/src/mongo/db/s/config/sharding_catalog_manager_database_operations.cpp
@@ -289,13 +289,6 @@ void ShardingCatalogManager::commitMovePrimary(OperationContext* opCtx,
DBDirectClient dbClient(opCtx);
const auto commandResponse = dbClient.runCommand(updateOp.serialize({}));
uassertStatusOK(getStatusFromWriteCommandReply(commandResponse->getCommandReply()));
-
- WriteConcernResult writeConcernResult;
- const auto latestOpTime = repl::ReplClientInfo::forClient(opCtx->getClient()).getLastOp();
- uassertStatusOK(waitForWriteConcern(opCtx,
- latestOpTime,
- WriteConcerns::kMajorityWriteConcernShardingTimeout,
- &writeConcernResult));
}
} // namespace mongo