When the hang analyzer runs, it prints information and address of the LockRequests and Lockers for each thread. If that Locker is owned by an idle, stashed transaction, something like this is printed:
LockRequest 795830 @ 0x7FD023737680: Mode = IX; Thread = thread::id of a non-executing thread
This is pretty useless to a debugger, because the information about which session and transaction own that Locker is not attainable from this output. Instead it requires finding the SessionCatalog and searching through the list of sessions.
When unsetThreadId() is called, we should replace the thread ID with the owning session ID, or just always keep a reference to the session ID on the locker.
- is related to
-
SERVER-35900 Refactor transaction machinery out from Session class
- Closed
-
SERVER-38045 Dump session catalog using GDB scripting
- Closed
- related to
-
SERVER-42382 add index build UUID to hang analyzer output
- Closed
-
SERVER-43910 include Client/OpCtx information in LockManager::dump() output
- Closed