Reading the oplog in a txn is permitted and triggers an invariant

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Gone away
    • Priority: Major - P3
    • None
    • Affects Version/s: 3.7.9
    • Component/s: Replication
    • None
    • Replication
    • ALL
    • Hide
      /*
       * 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();
      
      Show
      /* * 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();
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      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&)
      

            Assignee:
            [DO NOT USE] Backlog - Replication Team
            Reporter:
            Robert Guo (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: