[SERVER-15777] Invariant failure when yielding during findAndModify Created: 22/Oct/14  Updated: 11/Jul/16  Resolved: 27/Oct/14

Status: Closed
Project: Core Server
Component/s: Concurrency
Affects Version/s: 2.7.8
Fix Version/s: 2.8.0-rc0

Type: Bug Priority: Major - P3
Reporter: Kamran K. Assignee: J Rassi
Resolution: Done Votes: 0
Labels: 28qa
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
is duplicated by SERVER-15814 Crash while executing insert Closed
Related
related to SERVER-15797 [TTLMonitor] Invariant failure - serv... Closed
Operating System: ALL
Participants:
Linked BF Score: 0

 Description   

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



 Comments   
Comment by Githook User [ 27/Oct/14 ]

Author:

{u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}

Message: SERVER-15777 findAndModify shouldn't explicitly create WriteUnitOfWork
Branch: master
https://github.com/mongodb/mongo/commit/f8e17bdbf4393784b0ecf7da8e9b549be2d8a6ba

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