diff options
author | Paolo Polato <paolo.polato@mongodb.com> | 2022-03-04 15:13:09 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-04-13 16:33:45 +0000 |
commit | 6f431d930572323ccb919c824e3ed007d5b27391 (patch) | |
tree | 74d3bc0620841cb39111aa5a40079737a31bb8e2 | |
parent | de7bb49a9645b6ff2ce58369eb12a65d5aaa3b2d (diff) | |
download | mongo-6f431d930572323ccb919c824e3ed007d5b27391.tar.gz |
SERVER-62205 Check maxChunkSize parameter in (auto)splitVector requests
(cherry picked from commit 46a82e8cd87b95cf404420916246e7af8b96850b)
-rw-r--r-- | jstests/sharding/libs/mongos_api_params_util.js | 2 | ||||
-rw-r--r-- | src/mongo/db/s/auto_split_vector_command.cpp | 7 | ||||
-rw-r--r-- | src/mongo/db/s/split_vector_command.cpp | 4 |
3 files changed, 10 insertions, 3 deletions
diff --git a/jstests/sharding/libs/mongos_api_params_util.js b/jstests/sharding/libs/mongos_api_params_util.js index 97e94ab2081..914f6b70462 100644 --- a/jstests/sharding/libs/mongos_api_params_util.js +++ b/jstests/sharding/libs/mongos_api_params_util.js @@ -1263,7 +1263,7 @@ let MongosAPIParametersUtil = (function() { keyPattern: {_id: 1}, min: {_id: 0}, max: {_id: MaxKey}, - maxChunkSizeBytes: 1024 + maxChunkSizeBytes: 1024 * 1024 }) } }, diff --git a/src/mongo/db/s/auto_split_vector_command.cpp b/src/mongo/db/s/auto_split_vector_command.cpp index 2b0657cc3ce..1748491cac6 100644 --- a/src/mongo/db/s/auto_split_vector_command.cpp +++ b/src/mongo/db/s/auto_split_vector_command.cpp @@ -39,6 +39,8 @@ namespace mongo { namespace { +static constexpr int64_t kSmallestChunkSizeSupported = 1024 * 1024; + class AutoSplitVectorCommand final : public TypedCommand<AutoSplitVectorCommand> { public: bool skipApiVersionCheck() const override { @@ -72,6 +74,11 @@ public: const auto& req = request(); + uassert(ErrorCodes::ErrorCodes::InvalidOptions, + str::stream() << "maxChunksSizeBytes cannot be smaller than " + << kSmallestChunkSizeSupported, + req.getMaxChunkSizeBytes() >= kSmallestChunkSizeSupported); + auto splitKeys = autoSplitVector(opCtx, ns(), req.getKeyPattern(), diff --git a/src/mongo/db/s/split_vector_command.cpp b/src/mongo/db/s/split_vector_command.cpp index 9754207a8bd..b485c08361c 100644 --- a/src/mongo/db/s/split_vector_command.cpp +++ b/src/mongo/db/s/split_vector_command.cpp @@ -146,8 +146,8 @@ public: } uassert(ErrorCodes::InvalidOptions, - "The specified max chunk size must be greater than 0", - ret == boost::none || *ret > 0); + "The specified max chunk size must be at least 1MB", + ret == boost::none || *ret >= 1024 * 1024); return ret; }(); |