summaryrefslogtreecommitdiff
path: root/src/mongo/client/fetcher.cpp
diff options
context:
space:
mode:
authorjannaerin <golden.janna@gmail.com>2021-07-15 14:05:34 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-07-29 18:51:17 +0000
commit298d02f7432b84df2a955addc5bcdf6a366c6645 (patch)
treecd63849097905aee03c691c1fa400c6ba801b987 /src/mongo/client/fetcher.cpp
parent68f6c01d0f0452a9aef96e2da6289ce40fac2e41 (diff)
downloadmongo-298d02f7432b84df2a955addc5bcdf6a366c6645.tar.gz
SERVER-49897 Insert no-op entries into oplog buffer collections for resharding so resuming is less wasteful
Diffstat (limited to 'src/mongo/client/fetcher.cpp')
-rw-r--r--src/mongo/client/fetcher.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/mongo/client/fetcher.cpp b/src/mongo/client/fetcher.cpp
index cf0f72cb113..5c77365f8ed 100644
--- a/src/mongo/client/fetcher.cpp
+++ b/src/mongo/client/fetcher.cpp
@@ -58,6 +58,7 @@ const char* kNamespaceFieldName = "ns";
const char* kFirstBatchFieldName = "firstBatch";
const char* kNextBatchFieldName = "nextBatch";
+const char* kPostBatchResumeTokenFieldName = "postBatchResumeToken";
/**
* Parses cursor response in command result for cursor ID, namespace and documents.
@@ -144,6 +145,19 @@ Status parseCursorResponse(const BSONObj& obj,
doc.shareOwnershipWith(obj);
}
+ BSONElement postBatchResumeToken = cursorObj.getField(kPostBatchResumeTokenFieldName);
+ if (!postBatchResumeToken.eoo()) {
+ if (postBatchResumeToken.type() != BSONType::Object) {
+ return Status(ErrorCodes::FailedToParse,
+ str::stream()
+ << "'" << kCursorFieldName << "." << kPostBatchResumeTokenFieldName
+ << "' field must be of type object " << obj);
+ }
+
+ batchData->otherFields.postBatchResumeToken.emplace(postBatchResumeToken.Obj().getOwned());
+ }
+
+
return Status::OK();
}