[SERVER-34920] Reading the oplog in a txn is permitted and triggers an invariant Created: 09/May/18  Updated: 27/Oct/23  Resolved: 09/May/18

Status: Closed
Project: Core Server
Component/s: Replication
Affects Version/s: 3.7.9
Fix Version/s: None

Type: Bug Priority: Major - P3
Reporter: Robert Guo (Inactive) Assignee: Backlog - Replication Team
Resolution: Gone away Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
related to SERVER-34811 Forbid reads and writes to the config... Closed
Assigned Teams:
Replication
Operating System: ALL
Steps To Reproduce:

/*
 * Set up cluster.
 */
var r = new ReplSetTest({nodes:2});
r.startSet();r.initiate();
 
const sessionOptions = {causalConsistency: false};
const session = r.getPrimary().startSession(sessionOptions);
 
/*
 * Repro
 */
session.startTransaction();
var res = session.getDatabase("local").getCollection("oplog.rs").findOne();
session.commitTransaction();
 
session.endSession();

Participants:

 Description   

Stacktrace:

 /home/guo/mongo/src/mongo/util/assert_util.cpp:104:5: mongo::invariantFailed(char const*, char const*, unsigned int)
 /home/guo/mongo/src/mongo/util/invariant.h:67:9: void mongo::invariantWithLocation<bool>(bool const&, char const*, char const*, unsigned int)
 /home/guo/mongo/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp:225:5: mongo::WiredTigerRecoveryUnit::abandonSnapshot()
 /home/guo/mongo/src/mongo/db/exec/collection_scan.cpp:119:45: mongo::CollectionScan::doWork(unsigned long*)
 /home/guo/mongo/src/mongo/db/exec/plan_stage.cpp:46:29: mongo::PlanStage::work(unsigned long*)
 /home/guo/mongo/src/mongo/db/exec/limit.cpp:64:34: mongo::LimitStage::doWork(unsigned long*)
 /home/guo/mongo/src/mongo/db/exec/plan_stage.cpp:46:29: mongo::PlanStage::work(unsigned long*)
 /home/guo/mongo/src/mongo/db/query/plan_executor.cpp:553:45: mongo::PlanExecutor::getNextImpl(mongo::Snapshotted<mongo::BSONObj>*, mongo::RecordId*)
 /home/guo/mongo/src/mongo/db/query/plan_executor.cpp:404:23: mongo::PlanExecutor::getNext(mongo::BSONObj*, mongo::RecordId*)
 /home/guo/mongo/src/mongo/db/commands/find_cmd.cpp:348:57: mongo::(anonymous namespace)::FindCmd::run(mongo::OperationContext*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, mongo::BSONObj const&, mongo::BSONObjBuilder&)



 Comments   
Comment by Robert Guo (Inactive) [ 09/May/18 ]

spencer Works great now! Thanks for the tip.

Comment by Spencer Brody (Inactive) [ 09/May/18 ]

robert.guo, can you re-test on top of the fix for SERVER-34811?  I believe that should resolve this.

Generated at Thu Feb 08 04:38:16 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.