Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-10697

Backport WT-10253 to 5.0.x

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None

      We have a customer impacted by the WT-10253 issue below.

      We are requesting on the WT10253 fix in the 6.3 release get backported to 5.0.


      There are situations, where one or more sessions may not run the dhandle sweep for a potentially long time. This can happen even though those sessions "play by the rules" in that they regularly call reset, regular open cursors, and close all their cursors. It happens because the dhandle sweep ({}session_dhandle_sweep) is only called from }}{_}{{{}_session_get_dhandle. Yes, that is called when a cursor is initially opened, but not when a cursor is reopened after being cached. So if a session is running and opening/closing cursors in its cache, until it gets a cursor cache "miss", or does something else schema related (e.g. drop/rename/create), it will not call dhandle sweep and potentially free dhandles that are stale.

      We probably want to want to call the sweep on session reset. The sweep routine checks its time of last run to make sure it isn't (wastefully) run too often. We could also call it after a cached cursor is reopened (maybe every Nth time this happens).

      As part of this work, we should fold in the work from WT-10211.  That is, the session cursor cache has its own sweep, it should run potentially run more often and more aggressively if it has not been run in a while.

            donald.anderson@mongodb.com Donald Anderson
            shawn.hawkins@mongodb.com Shawn Hawkins
            0 Vote for this issue
            3 Start watching this issue