Create workload for Upsert Storm Write Conflicts

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Query Execution
    • QE 2026-06-22, QE 2026-07-06
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      SERVER-66751 identifies that the upsert path uses writeConflictRetry directly, instead of the generic yield machinery. Under concurrent upserts on the same key, this can behave differently from regular updates and may not cooperate with execution control as well. Many workloads use "insert or update by external ID" patterns that map naturally to updateOne(..., upsert: true).

      Workload design

      Baseline:
      Simple indexed reads as canaries.
      Degradation:
      Many concurrent updateOne(...,

      { upsert: true }

      ) operations:
      common filter form:

      { externalId: <key> }

      mixed population:
      some filter keys already present (update path)
      some filter keys absent (insert path)
      this exercises both branches of the upsert code path.
      Two index configurations:
      with a unique index on the filter field
      without a unique index on the filter field

      What this tells us

      Whether making upserts use the generic yield machinery (SERVER-66751) improves availability.
      Whether upserts represent a materially different failure mode than plain updates, under conflicting access on the same key.

            Assignee:
            Zixuan Zhuang
            Reporter:
            Zixuan Zhuang
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: