diff options
author | Misha Tyulenev <misha@mongodb.com> | 2017-05-17 19:40:01 -0400 |
---|---|---|
committer | Misha Tyulenev <misha@mongodb.com> | 2017-05-17 19:40:01 -0400 |
commit | 2cafeb2f1f18b7986cbd0d6cf23cbadbdcd54b2b (patch) | |
tree | 4be88a60b6568156b348c192ccd6788ec736b93d /src/mongo/rpc/metadata.cpp | |
parent | 9687c56dad047fb222076c0eb5fb25db6a796219 (diff) | |
download | mongo-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.cpp | 25 |
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) |