Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-15777

Invariant failure when yielding during findAndModify

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • 2.8.0-rc0
    • Affects Version/s: 2.7.8
    • Component/s: Concurrency
    • ALL
    • 0

      I'm seeing an (intermittent) invariant failure when findAndModify yields. This bug only affects recent versions of 2.7.x.

      2014-10-22T01:34:32.252-0400 I -        [conn2] Invariant failure !inAWriteUnitOfWork() src/mongo/db/concurrency/lock_state.cpp 572
      
      #0  0x00007ffff7bcc20b in raise (sig=5) at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c:37
      #1  0x0000000001892a60 in mongo::mongo_breakpoint () at src/mongo/util/debug_util.cpp:58
      #2  0x00000000018895fe in mongo::breakpoint () at src/mongo/util/debug_util.h:73
      #3  0x0000000001888494 in mongo::invariantFailed (msg=0x1e7593f "!inAWriteUnitOfWork()", file=0x1e757f8 "src/mongo/db/concurrency/lock_state.cpp", line=572) at src/mongo/util/assert_util.cpp:145
      #4  0x00000000012fe79b in mongo::LockerImpl<true>::saveLockStateAndUnlock (this=0x2f6c400, stateOut=0x7fffe80f4880) at src/mongo/db/concurrency/lock_state.cpp:572
      #5  0x00000000013044bf in mongo::Yield::yieldAllLocks (txn=0x37a1820, micros=1) at src/mongo/db/concurrency/yield.cpp:61
      #6  0x0000000001549b39 in mongo::PlanYieldPolicy::yield (this=0x379f660, registerPlan=false) at src/mongo/db/query/plan_yield_policy.cpp:72
      #7  0x000000000154419b in mongo::PlanExecutor::getNext (this=0x5810190, objOut=0x7fffe80f49a0, dlOut=0x0) at src/mongo/db/query/plan_executor.cpp:263
      #8  0x00000000015446a0 in mongo::PlanExecutor::executePlan (this=0x5810190) at src/mongo/db/query/plan_executor.cpp:374
      #9  0x00000000014727d7 in mongo::UpdateExecutor::execute (this=0x7fffe80f4b10, db=0x3541de0) at src/mongo/db/ops/update_executor.cpp:212
      #10 0x000000000146e5bb in mongo::update (db=0x3541de0, request=..., opDebug=0x5814270) at src/mongo/db/ops/update.cpp:58
      #11 0x0000000001293d4b in mongo::CmdFindAndModify::runNoDirectClient (txn=0x37a1820, ns=..., queryOriginal=..., fields=..., update=..., upsert=false, returnNew=false, remove=false, result=..., errmsg=...)
          at src/mongo/db/commands/find_and_modify.cpp:306
      #12 0x0000000001292baf in mongo::CmdFindAndModify::runNoDirectClient (this=0x26fada0 <mongo::cmdFindAndModify>, txn=0x37a1820, dbname=..., cmdObj=..., errmsg=..., result=..., fromRepl=false)
          at src/mongo/db/commands/find_and_modify.cpp:103
      #13 0x000000000129495c in mongo::CmdFindAndModify::run (this=0x26fada0 <mongo::cmdFindAndModify>, txn=0x37a1820, dbname=..., cmdObj=..., x=0, errmsg=..., result=..., y=false)
          at src/mongo/db/commands/find_and_modify.cpp:356
      #14 0x0000000001307a29 in mongo::_execCommand (txn=0x37a1820, c=0x26fada0 <mongo::cmdFindAndModify>, dbname=..., cmdObj=..., queryOptions=0, errmsg=..., result=..., fromRepl=false)
          at src/mongo/db/dbcommands.cpp:1158
      #15 0x00000000013089de in mongo::Command::execCommand (txn=0x37a1820, c=0x26fada0 <mongo::cmdFindAndModify>, queryOptions=0, cmdns=0x36aa414 "test.$cmd", cmdObj=..., result=..., fromRepl=false)
          at src/mongo/db/dbcommands.cpp:1372
      #16 0x00000000013092eb in mongo::_runCommands (txn=0x37a1820, ns=0x36aa414 "test.$cmd", _cmdobj=..., b=..., anObjBuilder=..., fromRepl=false, queryOptions=0) at src/mongo/db/dbcommands.cpp:1448
      #17 0x0000000001521876 in mongo::runCommands (txn=0x37a1820, ns=0x36aa414 "test.$cmd", jsobj=..., curop=..., b=..., anObjBuilder=..., fromRepl=false, queryOptions=0) at src/mongo/db/query/new_find.cpp:125
      #18 0x0000000001523233 in mongo::newRunQuery (txn=0x37a1820, m=..., q=..., curop=..., result=..., fromDBDirectClient=false) at src/mongo/db/query/new_find.cpp:529
      #19 0x000000000140f709 in mongo::receivedQuery (txn=0x37a1820, c=..., dbresponse=..., m=..., fromDBDirectClient=false) at src/mongo/db/instance.cpp:272
      #20 0x000000000141082a in mongo::assembleResponse (txn=0x37a1820, m=..., dbresponse=..., remote=..., fromDBDirectClient=false) at src/mongo/db/instance.cpp:445
      #21 0x0000000001125030 in mongo::MyMessageHandler::process (this=0x2f4e170, m=..., port=0x2f68580, le=0x5810000) at src/mongo/db/db.cpp:184
      #22 0x00000000018aea15 in mongo::PortMessageServer::handleIncomingMsg (arg=0x2f52550) at src/mongo/util/net/message_server_port.cpp:234
      #23 0x00007ffff7bc4182 in start_thread (arg=0x7fffe80f7700) at pthread_create.c:312
      #24 0x00007ffff6cc4fbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
      

      Version: 9fbc9684ce381f

            Assignee:
            rassi J Rassi
            Reporter:
            kamran.khan Kamran K.
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: