Drain ongoing setUserWriteBlock coordinators during addshard

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Fixed
    • Priority: Major - P3
    • 8.3.0-rc0
    • Affects Version/s: None
    • Component/s: None
    • None
    • Catalog and Routing
    • Fully Compatible
    • ALL
    • CAR Team 2025-11-10
    • 🟩 Routing and Topology
    • None
    • None
    • None
    • None
    • None
    • None

      During addShard, we propagate the setUserWriteBlock state from the cluster to the new shard. We also block new setUserWriteBlock coordinators from running, however we do not drain the ongoing ones. This can lead to the following scenario which leads to the new shard having incorrect userWriteBlock state:

      1. start setUserWriteBlock coordinator
      2. start add shard
      3. commit add shard
      4. setUserWriteBlock takes the stable topology region and sends the state to all shards but does not yet write it on the configsvr
      5. add shard propagates the old setuserwriteblock state to the new shard
      6. setUserWriteBlock writes the new value on the config server

      Rather than relying on the stable topology region in the setUserWriteBlock coordinator, we should drain the ongoing coordinators in the addShard command ensuring that the state cannot change while a shard is being added.

            Assignee:
            Wolfee Farkas
            Reporter:
            Allison Easton
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: