Details
-
Bug
-
Status: Closed
-
Major - P3
-
Resolution: Done
-
2.8.0-rc2
-
Fully Compatible
-
ALL
Description
As the title suggests. It's the hottest mutex in mongo-WT at the time of writing for some workloads (e.g. sysbench). I'm attaching some stacktraces to give better sense of the caller(s), together with percentages of time the lock is held.
Also, the VTune attached output shows up how the wait time on this lock is more than an order on magnitude than the second more contested lock.
Waiting Call Stack
|
1 of 22: 27.1% (1977.143s of 7292.660s)
|
|
mongod!lock+0x7 - mutex.hpp:59
|
mongod!lock+0 - locks.hpp:412
|
mongod!unique_lock+0 - locks.hpp:290
|
mongod!unlock_shared+0 - shared_mutex.hpp:108
|
mongod!~shared_lock+0 - locks.hpp:656
|
mongod!mongo::WiredTigerSessionCache::releaseSession+0x2c8 - wiredtiger_session_cache.cpp:187
|
mongod!mongo::WiredTigerRecoveryUnit::~WiredTigerRecoveryUnit+0x34 - wiredtiger_recovery_unit.cpp:90
|
mongod!mongo::WiredTigerRecoveryUnit::~WiredTigerRecoveryUnit+0x8 - wiredtiger_recovery_unit.cpp:93
|
mongod!~auto_ptr+0xe - auto_ptr.h:170
|
mongod!mongo::OperationContextImpl::~OperationContextImpl+0x2c - operation_context_impl.cpp:69
|
mongod!mongo::MyMessageHandler::process+0x5c2 - db.cpp:223
|
mongod!mongo::PortMessageServer::handleIncomingMsg+0x410 - message_server_port.cpp:234
|
libpthread-2.18.so!start_thread+0xc2 - [Unknown]:[Unknown]
|
libc-2.18.so!__clone+0x6c - [Unknown]:[Unknown]
|
Waiting Call Stack
|
2 of 22: 23.5% (1716.518s of 7292.660s)
|
|
mongod!lock+0x7 - mutex.hpp:59
|
mongod!lock+0 - locks.hpp:412
|
mongod!unique_lock+0xe - locks.hpp:290
|
mongod!lock_shared+0x18 - shared_mutex.hpp:60
|
mongod!lock+0 - locks.hpp:665
|
mongod!shared_lock+0 - locks.hpp:545
|
mongod!mongo::WiredTigerSessionCache::releaseSession+0x2a - wiredtiger_session_cache.cpp:181
|
mongod!mongo::WiredTigerRecoveryUnit::~WiredTigerRecoveryUnit+0x34 - wiredtiger_recovery_unit.cpp:90
|
mongod!mongo::WiredTigerRecoveryUnit::~WiredTigerRecoveryUnit+0x8 - wiredtiger_recovery_unit.cpp:93
|
mongod!~auto_ptr+0xe - auto_ptr.h:170
|
mongod!mongo::OperationContextImpl::~OperationContextImpl+0x2c - operation_context_impl.cpp:69
|
mongod!mongo::MyMessageHandler::process+0x5c2 - db.cpp:223
|
mongod!mongo::PortMessageServer::handleIncomingMsg+0x410 - message_server_port.cpp:234
|
libpthread-2.18.so!start_thread+0xc2 - [Unknown]:[Unknown]
|
libc-2.18.so!__clone+0x6c - [Unknown]:[Unknown]
|
Waiting Call Stack
|
3 of 22: 14.9% (1085.382s of 7292.660s)
|
|
mongod!lock+0x7 - mutex.hpp:59
|
mongod!lock+0 - locks.hpp:412
|
mongod!unique_lock+0 - locks.hpp:290
|
mongod!~shared_lock+0 - locks.hpp:656
|
mongod!mongo::WiredTigerSessionCache::getSession+0x327 - wiredtiger_session_cache.cpp:174
|
mongod!mongo::WiredTigerRecoveryUnit::getSession+0x38 - wiredtiger_recovery_unit.cpp:179
|
mongod!mongo::WiredTigerCursor::_init+0x1f - wiredtiger_recovery_unit.cpp:251
|
mongod!mongo::WiredTigerIndex::IndexCursor::IndexCursor+0x32 - wiredtiger_index.cpp:603
|
mongod!mongo::WiredTigerIndex::newCursor+0x39 - wiredtiger_index.cpp:397
|
mongod!mongo::BtreeBasedAccessMethod::findSingle+0x24 - btree_based_access_method.cpp:210
|
mongod!mongo::IDHackStage::work+0xeb - idhack.cpp:123
|
mongod!mongo::ProjectionStage::work+0x4d - projection.cpp:208
|
mongod!mongo::PlanExecutor::getNext+0x99 - plan_executor.cpp:288
|
mongod!mongo::runQuery+0xa93 - find.cpp:713
|
mongod!receivedQuery+0x1e4 - instance.cpp:221
|
mongod!mongo::assembleResponse+0x940 - instance.cpp:391
|
mongod!mongo::MyMessageHandler::process+0xdf - db.cpp:194
|
mongod!mongo::PortMessageServer::handleIncomingMsg+0x410 - message_server_port.cpp:234
|
libpthread-2.18.so!start_thread+0xc2 - [Unknown]:[Unknown]
|
libc-2.18.so!__clone+0x6c - [Unknown]:[Unknown]
|
Waiting Call Stack
|
4 of 22: 13.1% (955.371s of 7292.660s)
|
|
mongod!lock+0x7 - mutex.hpp:59
|
mongod!lock+0 - locks.hpp:412
|
mongod!unique_lock+0xe - locks.hpp:290
|
mongod!lock_shared+0x23 - shared_mutex.hpp:60
|
mongod!lock+0 - locks.hpp:665
|
mongod!shared_lock+0 - locks.hpp:545
|
mongod!mongo::WiredTigerSessionCache::getSession+0x7 - wiredtiger_session_cache.cpp:157
|
mongod!mongo::WiredTigerRecoveryUnit::getSession+0x38 - wiredtiger_recovery_unit.cpp:179
|
mongod!mongo::WiredTigerCursor::_init+0x1f - wiredtiger_recovery_unit.cpp:251
|
mongod!mongo::WiredTigerIndex::IndexCursor::IndexCursor+0x32 - wiredtiger_index.cpp:603
|
mongod!mongo::WiredTigerIndex::newCursor+0x39 - wiredtiger_index.cpp:397
|
mongod!mongo::BtreeBasedAccessMethod::findSingle+0x24 - btree_based_access_method.cpp:210
|
mongod!mongo::IDHackStage::work+0xeb - idhack.cpp:123
|
mongod!mongo::ProjectionStage::work+0x4d - projection.cpp:208
|
mongod!mongo::PlanExecutor::getNext+0x99 - plan_executor.cpp:288
|
mongod!mongo::runQuery+0xa93 - find.cpp:713
|
mongod!receivedQuery+0x1e4 - instance.cpp:221
|
mongod!mongo::assembleResponse+0x940 - instance.cpp:391
|
mongod!mongo::MyMessageHandler::process+0xdf - db.cpp:194
|
mongod!mongo::PortMessageServer::handleIncomingMsg+0x410 - message_server_port.cpp:234
|
libpthread-2.18.so!start_thread+0xc2 - [Unknown]:[Unknown]
|
libc-2.18.so!__clone+0x6c - [Unknown]:[Unknown]
|
Waiting Call Stack
|
5 of 22: 2.7% (194.191s of 7292.660s)
|
|
mongod!lock+0x7 - mutex.hpp:59
|
mongod!lock+0 - locks.hpp:412
|
mongod!unique_lock+0 - locks.hpp:290
|
mongod!~shared_lock+0 - locks.hpp:656
|
mongod!mongo::WiredTigerSessionCache::getSession+0x327 - wiredtiger_session_cache.cpp:174
|
mongod!mongo::WiredTigerRecoveryUnit::getSession+0x38 - wiredtiger_recovery_unit.cpp:179
|
mongod!mongo::WiredTigerCursor::_init+0x1f - wiredtiger_recovery_unit.cpp:251
|
mongod!mongo::WiredTigerIndex::IndexCursor::IndexCursor+0x32 - wiredtiger_index.cpp:603
|
mongod!mongo::WiredTigerIndex::newCursor+0x39 - wiredtiger_index.cpp:397
|
mongod!mongo::BtreeBasedAccessMethod::findSingle+0x24 - btree_based_access_method.cpp:210
|
mongod!mongo::IDHackStage::work+0xeb - idhack.cpp:123
|
mongod!mongo::UpdateStage::work+0x7b - update.cpp:706
|
mongod!mongo::PlanExecutor::getNext+0x99 - plan_executor.cpp:288
|
mongod!mongo::PlanExecutor::executePlan+0x3c - plan_executor.cpp:400
|
mongod!mongo::UpdateExecutor::execute+0x131 - update_executor.cpp:237
|
mongod!multiUpdate+0x411 - batch_executor.cpp:1277
|
mongod!mongo::WriteBatchExecutor::execUpdate+0x79 - batch_executor.cpp:891
|
mongod!mongo::WriteBatchExecutor::bulkExecute+0x1f1 - batch_executor.cpp:761
|
mongod!mongo::WriteBatchExecutor::executeBatch+0x394 - batch_executor.cpp:262
|
mongod!mongo::WriteCmd::run+0x172 - write_commands.cpp:144
|
mongod!mongo::_execCommand+0x33 - dbcommands.cpp:1231
|
mongod!mongo::Command::execCommand+0xc24 - dbcommands.cpp:1445
|
mongod!mongo::_runCommands+0x289 - dbcommands.cpp:1520
|
mongod!runCommands+0x32 - find.cpp:131
|
mongod!mongo::runQuery+0x4a - find.cpp:527
|
mongod!receivedQuery+0x1e4 - instance.cpp:221
|
mongod!mongo::assembleResponse+0x940 - instance.cpp:391
|
mongod!mongo::MyMessageHandler::process+0xdf - db.cpp:194
|
mongod!mongo::PortMessageServer::handleIncomingMsg+0x410 - message_server_port.cpp:234
|
libpthread-2.18.so!start_thread+0xc2 - [Unknown]:[Unknown]
|
libc-2.18.so!__clone+0x6c - [Unknown]:[Unknown]
|