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

    • Fully Compatible
    • Sharding 2019-05-06

      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.

            esha.maharishi@mongodb.com Esha Maharishi (Inactive)
            esha.maharishi@mongodb.com Esha Maharishi (Inactive)
            0 Vote for this issue
            2 Start watching this issue