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

Size storer can be flushed concurrently with being destructed for rollback

    • Storage Execution
    • Fully Compatible
    • ALL
    • v7.3, v7.0, v6.0, v5.0
    • Execution Team 2024-02-05
    • 120

      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).

            wei.hu@mongodb.com Wei Hu
            gregory.noma@mongodb.com Gregory Noma
            0 Vote for this issue
            7 Start watching this issue