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

Make single-update write conflict path same as multi-update

    • Type: Icon: Improvement Improvement
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • 3.0.0-rc9, 3.1.0
    • Affects Version/s: 2.8.0-rc0
    • Component/s: Concurrency, Sharding
    • Labels:
    • Fully Compatible

      The introduction of WriteConflictExceptions adds another lock-reacquistion path for certain storage engines. Because sharding and replication code need to recheck invariants on most lock reacquisition, this increases the number of places that need to be audited for correct behavior on reacquiring the lock. WriteConflictExceptions also break the executor model, in that successfully running an update/delete query now requires a retry loop which is easy to forget.

      Some sort of encapsulation of the invariants that need to be checked every time locks are reacquired would make it possible to generically run an executor with retry whether the lock reacquisition was due to old-style yielding or new-style WriteConflictException retries.

            eliot Eliot Horowitz (Inactive)
            greg_10gen Greg Studer
            1 Vote for this issue
            9 Start watching this issue