diff options
author | Jack Mulrow <jack.mulrow@mongodb.com> | 2017-04-04 15:03:13 -0400 |
---|---|---|
committer | Jack Mulrow <jack.mulrow@mongodb.com> | 2017-04-18 12:20:52 -0400 |
commit | 36dee9cbf58710f4168d39104aa5d446b3f15d49 (patch) | |
tree | 24811f61594d25afe9e38d667a01cbb2becb66a2 /src/mongo/db/logical_time_metadata_hook.cpp | |
parent | 104653ec8eca6865ff938c3e9966139b2cdd340f (diff) | |
download | mongo-36dee9cbf58710f4168d39104aa5d446b3f15d49.tar.gz |
SERVER-28565 Do not return logicalTime on non-sharded RS
Diffstat (limited to 'src/mongo/db/logical_time_metadata_hook.cpp')
-rw-r--r-- | src/mongo/db/logical_time_metadata_hook.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/mongo/db/logical_time_metadata_hook.cpp b/src/mongo/db/logical_time_metadata_hook.cpp index f45e4fba9db..bb4124d611b 100644 --- a/src/mongo/db/logical_time_metadata_hook.cpp +++ b/src/mongo/db/logical_time_metadata_hook.cpp @@ -42,6 +42,10 @@ LogicalTimeMetadataHook::LogicalTimeMetadataHook(ServiceContext* service) : _ser Status LogicalTimeMetadataHook::writeRequestMetadata(OperationContext* opCtx, BSONObjBuilder* metadataBob) { + if (!LogicalClock::get(_service)->canVerifyAndSign()) { + return Status::OK(); + } + LogicalTimeMetadata metadata(LogicalClock::get(_service)->getClusterTime()); metadata.writeToMetadata(metadataBob); return Status::OK(); @@ -54,6 +58,12 @@ Status LogicalTimeMetadataHook::readReplyMetadata(StringData replySource, return parseStatus.getStatus(); } auto& signedTime = parseStatus.getValue().getSignedTime(); + // LogicalTimeMetadata is default constructed if no logical time metadata was sent, so a + // default constructed SignedLogicalTime should be ignored. + if (signedTime.getTime() == LogicalTime::kUninitialized) { + return Status::OK(); + } + return LogicalClock::get(_service)->advanceClusterTimeFromTrustedSource(signedTime); } |