diff options
| author | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2025-02-11 15:07:35 -0300 |
|---|---|---|
| committer | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2025-02-11 15:07:35 -0300 |
| commit | 4cb8841196d0625dfa3825aa326f071cd27c7b8b (patch) | |
| tree | 1682a647d4463397c119183369ae6f750d5fdcff /src/mongo/db/rs_local_client.cpp | |
| parent | aa03c6362cbaa767638e6eed9b031d86dd2643d1 (diff) | |
| parent | 8f0827553e09872941945a093b647a4211a9db7f (diff) | |
Update upstream source from tag 'upstream/6.0.0'master
Update to upstream version '6.0.0'
with Debian dir 5604a80ec1c96ca76f25f40d78e6ef855abec322
Diffstat (limited to 'src/mongo/db/rs_local_client.cpp')
| -rw-r--r-- | src/mongo/db/rs_local_client.cpp | 25 |
1 files changed, 6 insertions, 19 deletions
diff --git a/src/mongo/db/rs_local_client.cpp b/src/mongo/db/rs_local_client.cpp index ce750402387..65cf9a284fa 100644 --- a/src/mongo/db/rs_local_client.cpp +++ b/src/mongo/db/rs_local_client.cpp @@ -102,8 +102,7 @@ StatusWith<Shard::QueryResponse> RSLocalClient::queryOnce( auto replCoord = repl::ReplicationCoordinator::get(opCtx); boost::optional<ScopeGuard<std::function<void()>>> readSourceGuard; - if (readConcernLevel == repl::ReadConcernLevel::kMajorityReadConcern || - readConcernLevel == repl::ReadConcernLevel::kSnapshotReadConcern) { + if (readConcernLevel == repl::ReadConcernLevel::kMajorityReadConcern) { // Resets to the original read source at the end of this operation. auto originalReadSource = opCtx->recoveryUnit()->getTimestampReadSource(); boost::optional<Timestamp> originalReadTimestamp; @@ -118,35 +117,23 @@ StatusWith<Shard::QueryResponse> RSLocalClient::queryOnce( opCtx->recoveryUnit()->setTimestampReadSource(originalReadSource); } }); - // Sets up operation context with majority read snapshot so correct optime can be - // retrieved. + // Sets up operation context with majority read snapshot so correct optime can be retrieved. opCtx->recoveryUnit()->setTimestampReadSource(RecoveryUnit::ReadSource::kMajorityCommitted); Status status = opCtx->recoveryUnit()->majorityCommittedSnapshotAvailable(); - if (!status.isOK()) { - return status; - } - // Waits for any writes performed by this ShardLocal instance to be committed and - // visible. + // Waits for any writes performed by this ShardLocal instance to be committed and visible. Status readConcernStatus = replCoord->waitUntilOpTimeForRead( - opCtx, - repl::ReadConcernArgs{_getLastOpTime(), repl::ReadConcernLevel::kMajorityReadConcern}); + opCtx, repl::ReadConcernArgs{_getLastOpTime(), readConcernLevel}); if (!readConcernStatus.isOK()) { return readConcernStatus; } + // Informs the storage engine to read from the committed snapshot for the rest of this + // operation. status = opCtx->recoveryUnit()->majorityCommittedSnapshotAvailable(); if (!status.isOK()) { return status; } - - if (readConcernLevel == repl::ReadConcernLevel::kSnapshotReadConcern) { - // Snapshot readConcern starts a snapshot at the majority timestamp, acquire the - // timestamp now and overwrite the majority readConcern used above. - auto opTime = replCoord->getCurrentCommittedSnapshotOpTime(); - opCtx->recoveryUnit()->setTimestampReadSource(RecoveryUnit::ReadSource::kProvided, - opTime.getTimestamp()); - } } else { invariant(readConcernLevel == repl::ReadConcernLevel::kLocalReadConcern); } |
