summaryrefslogtreecommitdiff
path: root/src/mongo/db/service_entry_point_common.cpp
diff options
context:
space:
mode:
authorKaloian Manassiev <kaloian.manassiev@mongodb.com>2022-03-01 11:01:22 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-03-01 12:08:24 +0000
commit0908dbec2f7e5d0dd0bfdf9369c5691aa75627fe (patch)
tree964062c8a20a21c03799c98614181ca9ff77247f /src/mongo/db/service_entry_point_common.cpp
parent07d0be8c575c796065fdc18d05723bd92f66c8f2 (diff)
downloadmongo-0908dbec2f7e5d0dd0bfdf9369c5691aa75627fe.tar.gz
SERVER-64057 Move the shard/database version parsing to the endpoint
Diffstat (limited to 'src/mongo/db/service_entry_point_common.cpp')
-rw-r--r--src/mongo/db/service_entry_point_common.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/mongo/db/service_entry_point_common.cpp b/src/mongo/db/service_entry_point_common.cpp
index 0c7b8d10f26..84d99a67405 100644
--- a/src/mongo/db/service_entry_point_common.cpp
+++ b/src/mongo/db/service_entry_point_common.cpp
@@ -1551,8 +1551,6 @@ void ExecCommandDatabase::_initiateCommand() {
// Once API params and txn state are set on opCtx, enforce the "requireApiVersion" setting.
enforceRequireAPIVersion(opCtx, command);
- auto& oss = OperationShardingState::get(opCtx);
-
if (!opCtx->getClient()->isInDirectClient() &&
readConcernArgs.getLevel() != repl::ReadConcernLevel::kAvailableReadConcern &&
(iAmPrimary || (readConcernArgs.hasLevel() || readConcernArgs.getArgsAfterClusterTime()))) {
@@ -1567,7 +1565,18 @@ void ExecCommandDatabase::_initiateCommand() {
? bucketNss
: _invocation->ns();
- oss.initializeClientRoutingVersionsFromCommand(namespaceForSharding, request.body);
+ boost::optional<ChunkVersion> shardVersion;
+ if (auto shardVersionElem = request.body[ChunkVersion::kShardVersionField]) {
+ shardVersion = ChunkVersion::fromBSONPositionalOrNewerFormat(shardVersionElem);
+ }
+
+ boost::optional<DatabaseVersion> databaseVersion;
+ if (auto databaseVersionElem = request.body[DatabaseVersion::kDatabaseVersionField]) {
+ databaseVersion = DatabaseVersion(databaseVersionElem.Obj());
+ }
+
+ OperationShardingState::get(opCtx).initializeClientRoutingVersions(
+ namespaceForSharding, shardVersion, databaseVersion);
}
_scoped = _execContext->behaviors->scopedOperationCompletionShardingActions(opCtx);