summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp
diff options
context:
space:
mode:
authorVesselina Ratcheva <vesselina.ratcheva@10gen.com>2021-10-04 22:27:25 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-10-04 23:57:08 +0000
commit4a230c070cb187604d07d04598a912b4feca937d (patch)
tree906ef27e1f00a5eedd7d85d814d31d8bc069a1de /src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp
parentdacbdf22acd913991b7dbb89efc0943be15e9e66 (diff)
downloadmongo-4a230c070cb187604d07d04598a912b4feca937d.tar.gz
SERVER-58636 Allow initial syncing nodes to see entries from uncommitted batches on secondaries
Diffstat (limited to 'src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp')
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp
index 3e05d6b0f55..f95dc90b7bf 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp
@@ -955,6 +955,8 @@ void WiredTigerRecoveryUnit::setRoundUpPreparedTimestamps(bool value) {
void WiredTigerRecoveryUnit::setTimestampReadSource(ReadSource readSource,
boost::optional<Timestamp> provided) {
+ tassert(5863604, "Cannot change ReadSource as it is pinned.", !isReadSourcePinned());
+
LOGV2_DEBUG(22416,
3,
"setting timestamp read source",
@@ -976,6 +978,20 @@ RecoveryUnit::ReadSource WiredTigerRecoveryUnit::getTimestampReadSource() const
return _timestampReadSource;
}
+void WiredTigerRecoveryUnit::pinReadSource() {
+ LOGV2_DEBUG(5863602, 3, "Pinning read source on WT recovery unit");
+ _readSourcePinned = true;
+}
+
+void WiredTigerRecoveryUnit::unpinReadSource() {
+ LOGV2_DEBUG(5863603, 3, "Unpinning WT recovery unit read source");
+ _readSourcePinned = false;
+}
+
+bool WiredTigerRecoveryUnit::isReadSourcePinned() const {
+ return _readSourcePinned;
+}
+
void WiredTigerRecoveryUnit::beginIdle() {
// Close all cursors, we don't want to keep any old cached cursors around.
if (_session) {