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

FCV opobserver _setVersion must not throw interrupts

    XMLWordPrintableJSON

Details

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: Major - P3 Major - P3
    • None
    • None
    • None
    • None
    • Replication
    • ALL
    • 105

    Description

      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.

      Attachments

        Activity

          People

            backlog-server-repl Backlog - Replication Team
            matthew.russotto@mongodb.com Matthew Russotto
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: