diff options
author | jannaerin <golden.janna@gmail.com> | 2021-07-15 14:05:34 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-07-29 18:51:17 +0000 |
commit | 298d02f7432b84df2a955addc5bcdf6a366c6645 (patch) | |
tree | cd63849097905aee03c691c1fa400c6ba801b987 /src/mongo/client/fetcher.cpp | |
parent | 68f6c01d0f0452a9aef96e2da6289ce40fac2e41 (diff) | |
download | mongo-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.cpp | 14 |
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(); } |