FCV opobserver _setVersion must not throw interrupts

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Duplicate
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Replication
    • ALL
    • 105
    • None
    • 3
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      The call FcvOpObserver::_setVersion is run inside an onCommit handler, which is essentially noexcept (it calls terminate() manually on exception). However, killSessionsAbortUnpreparedTransactions, which it calls, is an interrupt point, so we can be interrupted (e.g. by stepdown, or even a user kill) and therefore crash.

      This is essentially a critical section – once we have committed the FCV update we MUST kill all the transactions and complete the _setVersion handler. But it's run from an (interruptable) client session.

              Assignee:
              [DO NOT USE] Backlog - Replication Team
              Reporter:
              Matthew Russotto
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: