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

Shutdown in mongos can trigger BatchWriteOp invariant

    XMLWordPrintable

    Details

    • Backwards Compatibility:
      Fully Compatible
    • Operating System:
      ALL
    • Backport Requested:
      v4.0, v3.6
    • Steps To Reproduce:
      Hide

      Taken from SERVER-40184:

      1. startTransaction in session 0
      2. execute insertOne on collection
      3. startTransaction in session 1
      4. execute insertOne on collection (WriteConflict error expected)
      Show
      Taken from SERVER-40184 : startTransaction in session 0 execute insertOne on collection startTransaction in session 1 execute insertOne on collection (WriteConflict error expected)
    • Sprint:
      Sharding 2019-05-06
    • Case:
    • Linked BF Score:
      5

      Description

      Invariant failure _targeted.empty() src\mongo\s\write_ops\batch_write_op.cpp 255

      Scenario:

      1. ARS next calls makeProgress, calls pop and this can cause it to throw shutdownInProgress if no response has been pushed for remote.
      2. This will get caught and cancel all the pending requests. However, what this actually does is mark the task as 'cancelled' and tell the task executor to schedule them right away. Or, in the worse case when the executor is in shutdown, it might just get ignored.
      3. Right before the task executor is able to actually cancel and push the response, if ARS calls makeProgress again, it will trigger the shutdownInProgress error again, exiting the next() call and trigerring the destructor of BatchWriteOp with _targeted not fully consumed.

        Attachments

          Issue Links

            Activity

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                8 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: