diff options
author | Jack Mulrow <jack.mulrow@mongodb.com> | 2018-03-20 14:00:27 -0400 |
---|---|---|
committer | Jack Mulrow <jack.mulrow@mongodb.com> | 2018-04-23 14:20:43 -0400 |
commit | 8941fac630e0ac31649a1e32b0ea54c3930bdfec (patch) | |
tree | db0a5f7fe34198d7b3974263e4a47f29a626b749 /src/mongo/s/query/async_results_merger.cpp | |
parent | fc8096229e6ba7745431f77ec985eb65ee0541af (diff) | |
download | mongo-8941fac630e0ac31649a1e32b0ea54c3930bdfec.tar.gz |
SERVER-33991 Pass txnNumber in getMore requests through mongos
Diffstat (limited to 'src/mongo/s/query/async_results_merger.cpp')
-rw-r--r-- | src/mongo/s/query/async_results_merger.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/mongo/s/query/async_results_merger.cpp b/src/mongo/s/query/async_results_merger.cpp index 45403399e8c..3e41a36c089 100644 --- a/src/mongo/s/query/async_results_merger.cpp +++ b/src/mongo/s/query/async_results_merger.cpp @@ -94,6 +94,10 @@ AsyncResultsMerger::AsyncResultsMerger(OperationContext* opCtx, _mergeQueue(MergingComparator(_remotes, _params.getSort() ? *_params.getSort() : BSONObj(), _params.getCompareWholeSortKey())) { + if (params.getTxnNumber()) { + invariant(params.getSessionId()); + } + size_t remoteIndex = 0; for (const auto& remote : _params.getRemotes()) { _remotes.emplace_back(remote.getHostAndPort(), @@ -352,6 +356,20 @@ Status AsyncResultsMerger::_askForNextBatch(WithLock, size_t remoteIndex) { boost::none) .toBSON(); + if (_params.getSessionId()) { + BSONObjBuilder newCmdBob(std::move(cmdObj)); + + BSONObjBuilder lsidBob(newCmdBob.subobjStart(OperationSessionInfo::kSessionIdFieldName)); + _params.getSessionId()->serialize(&lsidBob); + lsidBob.doneFast(); + + if (_params.getTxnNumber()) { + newCmdBob.append(OperationSessionInfo::kTxnNumberFieldName, *_params.getTxnNumber()); + } + + cmdObj = newCmdBob.obj(); + } + executor::RemoteCommandRequest request( remote.getTargetHost(), _params.getNss().db().toString(), cmdObj, _opCtx); |