Fix session_inuse not decremented on error in __btree_pin_hs_dhandle

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Fixed
    • Priority: Major - P3
    • WT12.0.0, 9.0.0-rc0
    • Affects Version/s: None
    • Component/s: Btree, DHandles
    • None
    • Storage Engines - Transactions
    • 158.199
    • SE Transactions - 2026-04-24
    • 1

      Problem

      In __btree_pin_hs_dhandle, if __wt_session_release_dhandle fails after session_inuse has already been incremented, the error path never decrements it and never sets btree->hs_checkpoint_name. The key subtlety is that __wt_session_release_dhandle always clears session->dhandle via WT_DHANDLE_CLEAR regardless of success or failure, so the error path cannot use session->dhandle to recover the pointer. Since __wt_btree_close guards its release on btree->hs_checkpoint_name != NULL, the elevated session_inuse is never undone.

            Assignee:
            Chenhao Qu
            Reporter:
            Chenhao Qu
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: