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

A stashed Locker should keep information about the owning transaction

    • Type: Icon: Improvement Improvement
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 4.1.8, 4.0.15
    • Affects Version/s: None
    • Component/s: None
    • Labels:
    • Fully Compatible
    • v4.0
    • Storage NYC 2019-01-14, Storage NYC 2019-01-28
    • 62

      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.

            xiangyu.yao@mongodb.com Xiangyu Yao (Inactive)
            louis.williams@mongodb.com Louis Williams
            1 Vote for this issue
            7 Start watching this issue