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

TimestampMonitor listeners should not acquire GlobalLock

    • Type: Icon: Bug Bug
    • Resolution: Gone away
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Storage Execution
    • ALL
    • Execution Team 2025-02-17, Storage Execution 2025-03-03, Storage Execution 2025-03-17
    • 200
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      SERVER-98989 changed how StorageEngineImpl::TimestampMonitor listeners are supposed to synchronize with storage engine rollback. Before SERVER-98989 the listeners used the Global Lock, which is an indirect dependency from the storage engine into the catalog that we don't like.

      We now stop the monitor before rollback and restart the monitor afterwards, so that the listeners wouldn't run concurrently with rollback. To stop the monitor, we first try to acquire _monitorMutex before making a copy of the registered listeners, and if the listener runs concurrently and attempts to acquire GlobalLock, there could be deadlocks.

            Assignee:
            wei.hu@mongodb.com Wei Hu
            Reporter:
            wei.hu@mongodb.com Wei Hu
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: