summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVishnu Kaushik <vishnu.kaushik@mongodb.com>2021-06-16 19:03:12 +0000
committerVishnu Kaushik <vishnu.kaushik@mongodb.com>2021-06-22 15:12:58 +0000
commit4610b9a4678e2141b559ba3ed7f033b4814c068d (patch)
treeee1fadcc9218e550aeb8e232904072641e987f92
parentc748bbbb0b373ce2e914d6e7d1e83ec0eccd239f (diff)
downloadmongo-4610b9a4678e2141b559ba3ed7f033b4814c068d.tar.gz
SERVER-57754 Tenant Oplog Applier doesn't grab the RSTL before reserving oplog slots
-rw-r--r--src/mongo/db/repl/tenant_oplog_applier.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/mongo/db/repl/tenant_oplog_applier.cpp b/src/mongo/db/repl/tenant_oplog_applier.cpp
index 85cb7e958cb..7ca766859e9 100644
--- a/src/mongo/db/repl/tenant_oplog_applier.cpp
+++ b/src/mongo/db/repl/tenant_oplog_applier.cpp
@@ -415,6 +415,10 @@ TenantOplogApplier::OpTimePair TenantOplogApplier::_writeNoOpEntries(
// the RSTL.
opCtx->setAlwaysInterruptAtStepDownOrUp();
+ // Prevent the node from being able to change state when reserving oplog slots and writing
+ // entries.
+ AutoGetOplog oplogWrite(opCtx, OplogAccessMode::kWrite);
+
// We start WriteUnitOfWork only to reserve oplog slots. So, it's ok to abort the
// WriteUnitOfWork when it goes out of scope.
WriteUnitOfWork wuow(opCtx);