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

Recovering a transaction's outcome should block if the participant is in prepare

    XMLWordPrintable

Details

    • Fully Compatible
    • Sharding 2019-05-06

    Description

      Since with SERVER-40806, the recovery shard and coordinator shard can be different, it's possible for recovering the transaction's outcome to find the a participant in prepare.

      For example:

      1) client sends commit to original mongos
      2) mongos hands off commit to coordinator
      3) coordinator sends prepares
      4) client sends "recover" commit to different mongos
      5) different mongos tries to recover from the recovery shard, which is not necessarily the coordinator shard, and so doesn't necessarily have a coordinator in its in-memory catalog. so, the recovery shard node tries to recover from its local participant and finds the local participant in prepare

      Recovering a transaction's outcome should be changed to block until the participant has finished committing or aborting the transaction.

      Attachments

        Issue Links

          Activity

            People

              esha.maharishi@mongodb.com Esha Maharishi
              esha.maharishi@mongodb.com Esha Maharishi
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: