diff options
author | Tommaso Tocci <tommaso.tocci@mongodb.com> | 2022-03-21 17:17:01 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-03-21 23:07:25 +0000 |
commit | bfdbbb2a3ce0bfa598ea89a5d8e80a9d683e3931 (patch) | |
tree | b9a769cc1e612f0db9e519eb3dc25d276e3c4e7c | |
parent | 3770d1e8611bb316b3aa478b4359f6375b537f54 (diff) | |
download | mongo-bfdbbb2a3ce0bfa598ea89a5d8e80a9d683e3931.tar.gz |
SERVER-64651 Prevent refineCollectionShardKey to run on config server
(cherry picked from commit ece9ffb3227b8e69d8908ae0d0437701d9847a77)
-rw-r--r-- | jstests/sharding/refine_collection_shard_key_basic.js | 5 | ||||
-rw-r--r-- | src/mongo/db/s/shardsvr_refine_collection_shard_key_command.cpp | 4 |
2 files changed, 9 insertions, 0 deletions
diff --git a/jstests/sharding/refine_collection_shard_key_basic.js b/jstests/sharding/refine_collection_shard_key_basic.js index a751083e47c..d4418ca256f 100644 --- a/jstests/sharding/refine_collection_shard_key_basic.js +++ b/jstests/sharding/refine_collection_shard_key_basic.js @@ -274,6 +274,11 @@ assert.commandFailedWithCode( mongos.adminCommand({refineCollectionShardKey: kNsName, key: {_id: 1, aKey: 1}}), ErrorCodes.NamespaceNotSharded); +// Should fail because operation can't run on config server +assert.commandFailedWithCode( + mongos.adminCommand({refineCollectionShardKey: "config.collections", key: {_id: 1, aKey: 1}}), + ErrorCodes.NoShardingEnabled); + enableShardingAndShardColl({_id: 1}); // Should fail because shard key is invalid (i.e. bad values). diff --git a/src/mongo/db/s/shardsvr_refine_collection_shard_key_command.cpp b/src/mongo/db/s/shardsvr_refine_collection_shard_key_command.cpp index fdd0c12131c..0797b59f3bd 100644 --- a/src/mongo/db/s/shardsvr_refine_collection_shard_key_command.cpp +++ b/src/mongo/db/s/shardsvr_refine_collection_shard_key_command.cpp @@ -32,6 +32,7 @@ #include "mongo/db/auth/authorization_session.h" #include "mongo/db/commands.h" #include "mongo/db/s/refine_collection_shard_key_coordinator.h" +#include "mongo/db/s/sharding_state.h" #include "mongo/s/request_types/refine_collection_shard_key_gen.h" #include "mongo/s/request_types/sharded_ddl_commands_gen.h" @@ -62,6 +63,9 @@ public: using InvocationBase::InvocationBase; void typedRun(OperationContext* opCtx) { + uassertStatusOK(ShardingState::get(opCtx)->canAcceptShardedCommands()); + opCtx->setAlwaysInterruptAtStepDownOrUp(); + auto coordinatorDoc = RefineCollectionShardKeyCoordinatorDocument(); coordinatorDoc.setShardingDDLCoordinatorMetadata( {{ns(), DDLCoordinatorTypeEnum::kRefineCollectionShardKey}}); |