-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Server Security
-
Fully Compatible
-
ALL
-
Server Security 2026-08-14
-
0
-
None
-
None
-
None
-
None
-
None
-
None
-
None
`fle2_text_test_fixture.js:updateAndValidate()`'s cleanup
{update(_id: N, {updated: true}`, {$set: {updated: false}})}
omits the shard key (last: "hashed"), so mongos broadcasts it to all chunk-owning shards with ChunkVersion::IGNORED. In the failing run, a balancer moveRange (which moved the chunk holding all the test documents, since every doc shares hash(null)) committed while the broadcast for _id: 0 was in flight:
- 09:18:28.698 — recipient (shard-rs1) evaluated the update pre-commit: not yet owner, ownership filter excluded the doc, n:0.
- 09:18:28.698→.775 — donor (config shard) blocked on the migration critical section (raised .693, released .775 at kFinalizeMigration), was retried locally after release: no longer owner, n:0.
- 09:18:28.777 — router summed nShards:2 nMatched:0 nModified:0 ok:1 — an acknowledged, silently lost write.
Oplog application logs (id 21254) on all four nodes confirm the update was never applied anywhere. Doc 0 therefore kept updated: true (set via the migration transfer-mod), and the next test case's verification read correctly returned [ 0 ] instead of [ ]. Secondary reads and causal consistency behaved correctly throughout — the disaggregated fixture merely widens the critical-section window (~80ms), making the race more likely than in classic sharded suites.
Test-side handling: the two FLE2 text tests are excluded from disagg_sharded_colls_jscore_passthrough_secondary_reads_with_balancer, filed SERVER-133313 to fix race condition.
- is related to
-
SERVER-132218 Replace multi updates with individual updates in fle2_text_test_fixture.js
-
- Closed
-