Wake replication waiters on rollback transition to prevent drain livelock

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Storage Execution
    • Storage Execution 2026-05-25
    • 200
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      When a node transitions to RS_ROLLBACK, outstanding write-concern waiters in _replicationWaiterList (and the other three waiter lists) are never resolved – setErrorAll is only called during shutdown. If a thread wakes from markKilled with its future still unresolved, it attempts to acquire _mutex to remove itself from the waiter list. If _mutex is held by the rollback path at that moment, the thread deadlocks, retains its IntentRegistry token, and the rollback drain loops forever.

            Assignee:
            Unassigned
            Reporter:
            Malik Endsley (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: