diff options
author | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2022-03-01 11:01:22 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-03-01 12:08:24 +0000 |
commit | 0908dbec2f7e5d0dd0bfdf9369c5691aa75627fe (patch) | |
tree | 964062c8a20a21c03799c98614181ca9ff77247f /src/mongo/db/service_entry_point_common.cpp | |
parent | 07d0be8c575c796065fdc18d05723bd92f66c8f2 (diff) | |
download | mongo-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.cpp | 15 |
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); |