summaryrefslogtreecommitdiff
path: root/src/mongo/rpc/metadata.cpp
diff options
context:
space:
mode:
authorMisha Tyulenev <misha@mongodb.com>2017-05-17 19:40:01 -0400
committerMisha Tyulenev <misha@mongodb.com>2017-05-17 19:40:01 -0400
commit2cafeb2f1f18b7986cbd0d6cf23cbadbdcd54b2b (patch)
tree4be88a60b6568156b348c192ccd6788ec736b93d /src/mongo/rpc/metadata.cpp
parent9687c56dad047fb222076c0eb5fb25db6a796219 (diff)
downloadmongo-2cafeb2f1f18b7986cbd0d6cf23cbadbdcd54b2b.tar.gz
SERVER-29071 gossip clusterTime in mongo shell
Diffstat (limited to 'src/mongo/rpc/metadata.cpp')
-rw-r--r--src/mongo/rpc/metadata.cpp25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/mongo/rpc/metadata.cpp b/src/mongo/rpc/metadata.cpp
index 77545303ff7..80046bdad58 100644
--- a/src/mongo/rpc/metadata.cpp
+++ b/src/mongo/rpc/metadata.cpp
@@ -183,17 +183,32 @@ CommandAndMetadata upconvertRequestMetadata(BSONObj legacyCmdObj, int queryFlags
uassertStatusOK(
AuditMetadata::upconvert(legacyCmdObj, queryFlags, &auditCommandBob, &metadataBob));
- return std::make_tuple(auditCommandBob.obj(), metadataBob.obj());
+ BSONObjBuilder logicalTimeCommandBob;
+ for (auto elem : auditCommandBob.done()) {
+ if (elem.fieldNameStringData() == LogicalTimeMetadata::fieldName()) {
+ metadataBob.append(elem);
+ } else {
+ logicalTimeCommandBob.append(elem);
+ }
+ }
+
+ return std::make_tuple(logicalTimeCommandBob.obj(), metadataBob.obj());
}
LegacyCommandAndFlags downconvertRequestMetadata(BSONObj cmdObj, BSONObj metadata) {
int legacyQueryFlags = 0;
+ BSONObjBuilder logicalTimeCommandBob;
+ logicalTimeCommandBob.appendElements(cmdObj);
+ if (auto logicalTime = metadata[LogicalTimeMetadata::fieldName()]) {
+ logicalTimeCommandBob.append(logicalTime);
+ }
+
+ // Ordering is important here - AuditingMetadata must be downconverted before ReadPreference.
BSONObjBuilder auditCommandBob;
- // Ordering is important here - AuditingMetadata must be downconverted first,
- // then ReadPreference.
- uassertStatusOK(
- AuditMetadata::downconvert(cmdObj, metadata, &auditCommandBob, &legacyQueryFlags));
+ uassertStatusOK(AuditMetadata::downconvert(
+ logicalTimeCommandBob.done(), metadata, &auditCommandBob, &legacyQueryFlags));
+ cmdObj = auditCommandBob.obj();
auto readPref = metadata["$readPreference"];
if (!readPref)