summaryrefslogtreecommitdiff
path: root/src/mongo/s/query/store_possible_cursor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/s/query/store_possible_cursor.cpp')
-rw-r--r--src/mongo/s/query/store_possible_cursor.cpp25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/mongo/s/query/store_possible_cursor.cpp b/src/mongo/s/query/store_possible_cursor.cpp
index 9877af451a2..d033898833a 100644
--- a/src/mongo/s/query/store_possible_cursor.cpp
+++ b/src/mongo/s/query/store_possible_cursor.cpp
@@ -77,7 +77,8 @@ StatusWith<BSONObj> storePossibleCursor(OperationContext* opCtx,
std::shared_ptr<executor::TaskExecutor> executor,
ClusterCursorManager* cursorManager,
PrivilegeVector privileges,
- TailableModeEnum tailableMode) {
+ TailableModeEnum tailableMode,
+ boost::optional<BSONObj> routerSort) {
if (!cmdResult["ok"].trueValue() || !cmdResult.hasField("cursor")) {
return cmdResult;
}
@@ -104,14 +105,22 @@ StatusWith<BSONObj> storePossibleCursor(OperationContext* opCtx,
auto& remoteCursor = params.remotes.back();
remoteCursor.setShardId(shardId.toString());
remoteCursor.setHostAndPort(server);
- remoteCursor.setCursorResponse(CursorResponse(incomingCursorResponse.getValue().getNSS(),
- incomingCursorResponse.getValue().getCursorId(),
- {}));
+ remoteCursor.setCursorResponse(
+ CursorResponse(incomingCursorResponse.getValue().getNSS(),
+ incomingCursorResponse.getValue().getCursorId(),
+ {}, /* batch */
+ incomingCursorResponse.getValue().getNumReturnedSoFar(),
+ incomingCursorResponse.getValue().getLastOplogTimestamp(),
+ incomingCursorResponse.getValue().getPostBatchResumeToken(),
+ incomingCursorResponse.getValue().getWriteConcernError()));
params.originatingCommandObj = CurOp::get(opCtx)->opDescription().getOwned();
params.tailableMode = tailableMode;
params.lsid = opCtx->getLogicalSessionId();
params.txnNumber = opCtx->getTxnNumber();
params.originatingPrivileges = std::move(privileges);
+ if (routerSort) {
+ params.sort = *routerSort;
+ }
if (TransactionRouter::get(opCtx)) {
params.isAutoCommit = false;
@@ -137,7 +146,13 @@ StatusWith<BSONObj> storePossibleCursor(OperationContext* opCtx,
CurOp::get(opCtx)->debug().cursorid = clusterCursorId.getValue();
CursorResponse outgoingCursorResponse(
- requestedNss, clusterCursorId.getValue(), incomingCursorResponse.getValue().getBatch());
+ requestedNss,
+ clusterCursorId.getValue(),
+ incomingCursorResponse.getValue().getBatch(),
+ incomingCursorResponse.getValue().getNumReturnedSoFar(),
+ incomingCursorResponse.getValue().getLastOplogTimestamp(),
+ incomingCursorResponse.getValue().getPostBatchResumeToken(),
+ incomingCursorResponse.getValue().getWriteConcernError());
return outgoingCursorResponse.toBSON(CursorResponse::ResponseType::InitialResponse);
}