summaryrefslogtreecommitdiff
path: root/src/mongo/db/logical_time_metadata_hook.cpp
diff options
context:
space:
mode:
authorJack Mulrow <jack.mulrow@mongodb.com>2017-04-04 15:03:13 -0400
committerJack Mulrow <jack.mulrow@mongodb.com>2017-04-18 12:20:52 -0400
commit36dee9cbf58710f4168d39104aa5d446b3f15d49 (patch)
tree24811f61594d25afe9e38d667a01cbb2becb66a2 /src/mongo/db/logical_time_metadata_hook.cpp
parent104653ec8eca6865ff938c3e9966139b2cdd340f (diff)
downloadmongo-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.cpp10
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);
}