summaryrefslogtreecommitdiff
path: root/src/mongo/rpc/metadata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/rpc/metadata.cpp')
-rw-r--r--src/mongo/rpc/metadata.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/mongo/rpc/metadata.cpp b/src/mongo/rpc/metadata.cpp
index e3ed093a693..6d9e7581698 100644
--- a/src/mongo/rpc/metadata.cpp
+++ b/src/mongo/rpc/metadata.cpp
@@ -37,6 +37,7 @@
#include "mongo/db/jsobj.h"
#include "mongo/db/logical_clock.h"
#include "mongo/db/logical_time_validator.h"
+#include "mongo/db/repl/replication_coordinator.h"
#include "mongo/rpc/metadata/client_metadata_ismaster.h"
#include "mongo/rpc/metadata/config_server_metadata.h"
#include "mongo/rpc/metadata/impersonated_user_metadata.h"
@@ -93,7 +94,13 @@ void readRequestMetadata(OperationContext* opCtx, const BSONObj& metadataObj, bo
uassertStatusOK(TrackingMetadata::readFromMetadata(trackingElem));
auto logicalClock = LogicalClock::get(opCtx);
- if (logicalClock && logicalClock->isEnabled()) {
+ auto replicationCoordinator = repl::ReplicationCoordinator::get(opCtx);
+ if (logicalClock && logicalClock->isEnabled() &&
+ (!replicationCoordinator ||
+ (replicationCoordinator->getReplicationMode() ==
+ repl::ReplicationCoordinator::modeReplSet &&
+ replicationCoordinator->getMemberState().readable()))) {
+
auto logicalTimeMetadata =
uassertStatusOK(rpc::LogicalTimeMetadata::readFromMetadata(logicalTimeElem));