summaryrefslogtreecommitdiff
path: root/src/mongo/db/transaction_participant.cpp
diff options
context:
space:
mode:
authorJason Chan <jason.chan@10gen.com>2019-04-09 16:23:46 -0400
committerJason Chan <jason.chan@10gen.com>2019-04-09 16:23:46 -0400
commit6a7f5a0b9c5798b20c91f2272abd9851ea9d2909 (patch)
treea0ad01b01180dadfe48fee984d10ea2bad536925 /src/mongo/db/transaction_participant.cpp
parent1041dd848e25e879260d1015d8da4f72ee7993fe (diff)
downloadmongo-6a7f5a0b9c5798b20c91f2272abd9851ea9d2909.tar.gz
SERVER-39829 Consider in-progress transactions when calculating the oldest active transaction timestamp
Diffstat (limited to 'src/mongo/db/transaction_participant.cpp')
-rw-r--r--src/mongo/db/transaction_participant.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/mongo/db/transaction_participant.cpp b/src/mongo/db/transaction_participant.cpp
index 59aa73e47c7..190fe6a09a7 100644
--- a/src/mongo/db/transaction_participant.cpp
+++ b/src/mongo/db/transaction_participant.cpp
@@ -373,10 +373,10 @@ TransactionParticipant::getOldestActiveTimestamp(Timestamp stableTimestamp) {
auto doc = record.get().data.toBson();
auto txnRecord = SessionTxnRecord::parse(
IDLParserErrorContext("parse oldest active txn record"), doc);
- if (txnRecord.getState() != DurableTxnStateEnum::kPrepared) {
+ if (txnRecord.getState() != DurableTxnStateEnum::kPrepared &&
+ txnRecord.getState() != DurableTxnStateEnum::kInProgress) {
continue;
}
-
// A prepared transaction must have a start timestamp.
// TODO(SERVER-40013): Handle entries with state "prepared" and no "startTimestamp".
invariant(txnRecord.getStartOpTime());