diff options
author | Pierlauro Sciarelli <pierlauro.sciarelli@mongodb.com> | 2022-10-14 12:58:42 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-10-14 13:34:33 +0000 |
commit | a9a07dc8deb6b83eb5cfd2b9e349a9e44ac2000c (patch) | |
tree | bf499529aa33c26ed7f590f5f61fb7c067b9987a | |
parent | 78557238304a71895c7c9535e5c6c15f06ad9082 (diff) | |
download | mongo-a9a07dc8deb6b83eb5cfd2b9e349a9e44ac2000c.tar.gz |
SERVER-66913 make configureCollectionBalancing() return NamespaceNotSharded on failure + allow calling configureCollectionBalancing interally
3 files changed, 13 insertions, 11 deletions
diff --git a/src/mongo/db/s/balancer/balancer.cpp b/src/mongo/db/s/balancer/balancer.cpp index bd2cb696a16..fdf6e004f2a 100644 --- a/src/mongo/db/s/balancer/balancer.cpp +++ b/src/mongo/db/s/balancer/balancer.cpp @@ -1137,7 +1137,7 @@ SharedSemiFuture<void> Balancer::applyLegacyChunkSizeConstraintsOnClusterData( NamespaceString::kLogicalSessionsNamespace, 0, boost::none /*defragmentCollection*/, - false /*enableAutoSplitter*/); + boost::none /*enableAutoSplitter*/); } catch (const ExceptionFor<ErrorCodes::NamespaceNotSharded>&) { // config.system.collections does not appear in config.collections; continue. } diff --git a/src/mongo/db/s/config/configsvr_configure_collection_balancing.cpp b/src/mongo/db/s/config/configsvr_configure_collection_balancing.cpp index a9db28064b5..c471c70437f 100644 --- a/src/mongo/db/s/config/configsvr_configure_collection_balancing.cpp +++ b/src/mongo/db/s/config/configsvr_configure_collection_balancing.cpp @@ -36,6 +36,7 @@ #include "mongo/db/auth/authorization_session.h" #include "mongo/db/auth/privilege.h" #include "mongo/db/commands.h" +#include "mongo/db/commands/feature_compatibility_version.h" #include "mongo/db/operation_context.h" #include "mongo/db/repl/repl_client_info.h" #include "mongo/db/s/balancer/balancer.h" @@ -60,6 +61,16 @@ public: void typedRun(OperationContext* opCtx) { opCtx->setAlwaysInterruptAtStepDownOrUp(); + + // Hold the FCV region to serialize with the setFeatureCompatibilityVersion command + FixedFCVRegion fcvRegion(opCtx); + uassert(ErrorCodes::IllegalOperation, + "_configsvrConfigureCollectionBalancing can only be run when the cluster is in " + "feature " + "compatibility versions greater or equal than 5.3.", + serverGlobalParams.featureCompatibility.isGreaterThanOrEqualTo( + multiversion::FeatureCompatibilityVersion::kVersion_5_3)); + uassert(ErrorCodes::IllegalOperation, str::stream() << Request::kCommandName << " can only be run on config servers", serverGlobalParams.clusterRole == ClusterRole::ConfigServer); diff --git a/src/mongo/db/s/config/sharding_catalog_manager_collection_operations.cpp b/src/mongo/db/s/config/sharding_catalog_manager_collection_operations.cpp index 15ae2a6c71c..1cb326b2bb5 100644 --- a/src/mongo/db/s/config/sharding_catalog_manager_collection_operations.cpp +++ b/src/mongo/db/s/config/sharding_catalog_manager_collection_operations.cpp @@ -563,14 +563,6 @@ void ShardingCatalogManager::configureCollectionBalancing( boost::optional<bool> defragmentCollection, boost::optional<bool> enableAutoSplitter) { - // Hold the FCV region to serialize with the setFeatureCompatibilityVersion command - FixedFCVRegion fcvRegion(opCtx); - uassert(ErrorCodes::IllegalOperation, - "_configsvrConfigureCollectionBalancing can only be run when the cluster is in feature " - "compatibility versions greater or equal than 5.3.", - serverGlobalParams.featureCompatibility.isGreaterThanOrEqualTo( - multiversion::FeatureCompatibilityVersion::kVersion_5_3)); - uassert(ErrorCodes::InvalidOptions, "invalid configure collection balancing update", chunkSizeMB || defragmentCollection || enableAutoSplitter); @@ -636,8 +628,7 @@ void ShardingCatalogManager::configureCollectionBalancing( false /* multi */), txnNumber); const auto numDocsModified = UpdateOp::parseResponse(res).getN(); - // TODO SERVER-66915 replace error code with NamespaceNotSharded - uassert(ErrorCodes::ConflictingOperationInProgress, + uassert(ErrorCodes::NamespaceNotSharded, str::stream() << "Expected to match one doc for query " << query << " but matched " << numDocsModified, numDocsModified == 1); |