diff --git a/src/mongo/db/read_concern.cpp b/src/mongo/db/read_concern.cpp
|
index 46c9e8b..59294da 100644
|
--- a/src/mongo/db/read_concern.cpp
|
+++ b/src/mongo/db/read_concern.cpp
|
@@ -212,8 +212,11 @@ Status waitForReadConcern(OperationContext* opCtx,
|
replCoord->getReplicationMode());
|
|
auto session = OperationContextSession::get(opCtx);
|
- // Currently speculative read concern is used only for transactions and snapshot reads.
|
- const bool speculative = session && session->inSnapshotReadOrMultiDocumentTransaction();
|
+ // Currently speculative read concern is used only for transactions and snapshot reads. However,
|
+ // we don't use speculative read concern if "atClusterTime" was explicitly specified as we've
|
+ // already been instructed to use an opTime that isn't last applied.
|
+ const bool speculative = session && session->inSnapshotReadOrMultiDocumentTransaction() &&
|
+ !readConcernArgs.getArgsAtClusterTime();
|
|
if (readConcernArgs.getLevel() == repl::ReadConcernLevel::kLinearizableReadConcern) {
|
if (replCoord->getReplicationMode() != repl::ReplicationCoordinator::modeReplSet) {
|