summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/transaction_oplog_application.cpp
diff options
context:
space:
mode:
authorA. Jesse Jiryu Davis <jesse@mongodb.com>2020-11-11 21:36:28 -0500
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-11-12 03:42:29 +0000
commitd0f87503e4d3dc265fb1340d4f492de884edcda4 (patch)
tree3a0031759de2d342f1cc55b17a13b6549fb9baf6 /src/mongo/db/repl/transaction_oplog_application.cpp
parentf19bb1bc99dd880e4115d7ae72f931a0031b5851 (diff)
downloadmongo-d0f87503e4d3dc265fb1340d4f492de884edcda4.tar.gz
SERVER-51807 Get point-in-time read timestamp in global lock
Diffstat (limited to 'src/mongo/db/repl/transaction_oplog_application.cpp')
-rw-r--r--src/mongo/db/repl/transaction_oplog_application.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/mongo/db/repl/transaction_oplog_application.cpp b/src/mongo/db/repl/transaction_oplog_application.cpp
index 67fb840de64..a8350066cbe 100644
--- a/src/mongo/db/repl/transaction_oplog_application.cpp
+++ b/src/mongo/db/repl/transaction_oplog_application.cpp
@@ -136,6 +136,8 @@ Status _applyTransactionFromOplogChain(OperationContext* opCtx,
status = _applyOperationsForTransaction(opCtx, ops, mode);
if (status.isOK()) {
+ // If the transaction was empty then we have no locks, ensure at least Global IX.
+ Lock::GlobalLock lk(opCtx, MODE_IX);
opCtx->recoveryUnit()->setPrepareTimestamp(commitTimestamp);
wunit.prepare();