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

    • Backwards Compatibility:
      Fully Compatible
    • Sprint:
      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

              Assignee:
              esha.maharishi Esha Maharishi
              Reporter:
              esha.maharishi Esha Maharishi
              Participants:
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: