summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp
diff options
context:
space:
mode:
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) {