The size storer gets flushed when a session is released to the session cache, which happens when a session object is destructed. The operation context owns a recovery unit which in turn owns a session, so operation context destruction can trigger a size storer flush. Further, certain threads like the FTDC collector construct and destruct an operation context when they run. However, when rolling back to the stable timestamp, the size storer gets replaced with a new one. Typically this is fine since RTS holds the global exclusive lock, but in this operation context destruction case there are no locks being held. Thus we can end up with the size storer being flushed (by the operation context destruction) concurrently with it being destructed (by RTS replacing it with a new size storer).
- causes
-
SERVER-93389 WiredTigerSessionCache does not properly dispose of sessions released after rollback
- Closed
-
SERVER-93848 WiredTigerSessionCache::getSession() can read stale value of shutting-down state
- Closed