summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierlauro Sciarelli <pierlauro.sciarelli@mongodb.com>2022-10-14 12:58:42 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-10-14 13:34:33 +0000
commita9a07dc8deb6b83eb5cfd2b9e349a9e44ac2000c (patch)
treebf499529aa33c26ed7f590f5f61fb7c067b9987a
parent78557238304a71895c7c9535e5c6c15f06ad9082 (diff)
downloadmongo-a9a07dc8deb6b83eb5cfd2b9e349a9e44ac2000c.tar.gz
SERVER-66913 make configureCollectionBalancing() return NamespaceNotSharded on failure + allow calling configureCollectionBalancing interally
-rw-r--r--src/mongo/db/s/balancer/balancer.cpp2
-rw-r--r--src/mongo/db/s/config/configsvr_configure_collection_balancing.cpp11
-rw-r--r--src/mongo/db/s/config/sharding_catalog_manager_collection_operations.cpp11
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);