diff options
author | Antonio Fuschetto <antonio.fuschetto@mongodb.com> | 2021-12-10 14:44:59 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-12-10 15:09:32 +0000 |
commit | d5d59422cf63d847fc8aa52e922174e2fdad3ed3 (patch) | |
tree | f666168caf63bf08bed4deb3f15f6e8ebb39278a /jstests/sharding/exact_shard_key_target.js | |
parent | 3b85c7ddb5f240d81711010fbfe91332c000102b (diff) | |
download | mongo-d5d59422cf63d847fc8aa52e922174e2fdad3ed3.tar.gz |
SERVER-59832 Prevent writes to orphan documents
Diffstat (limited to 'jstests/sharding/exact_shard_key_target.js')
-rw-r--r-- | jstests/sharding/exact_shard_key_target.js | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/jstests/sharding/exact_shard_key_target.js b/jstests/sharding/exact_shard_key_target.js index d0670c20172..4182b06b9e1 100644 --- a/jstests/sharding/exact_shard_key_target.js +++ b/jstests/sharding/exact_shard_key_target.js @@ -38,6 +38,14 @@ assert.eq(2, // // Non-multi update coll.remove({}); +// When the 'featureFlagNoChangeStreamEventsDueToOrphans' is enabled, orphaned documents are not +// actually removed by the 'remove' command to avoid unexpected events on change streams. In this +// scenario, it is necessary to remove them explicitly from the shards that own them. +const clusterParams = assert.commandWorked(st.configRS.getPrimary().adminCommand( + {getParameter: 1, featureFlagNoChangeStreamEventsDueToOrphans: 1})); +if (clusterParams.featureFlagNoChangeStreamEventsDueToOrphans.value) { + assert.commandWorked(st.shard0.getCollection(coll.toString()).remove({_id: 3})); +} assert.commandWorked(coll.insert({_id: 1, a: {b: 1}})); assert.commandWorked(coll.insert({_id: 2, a: {b: -1}})); // Need orphaned data to see the impact @@ -50,6 +58,9 @@ assert.eq(1, // // Successive upserts (replacement-style) coll.remove({}); +if (clusterParams.featureFlagNoChangeStreamEventsDueToOrphans.value) { + assert.commandWorked(st.shard0.getCollection(coll.toString()).remove({_id: 3})); +} assert.commandWorked(coll.update({a: {b: 1}}, {a: {b: 1}}, {upsert: true})); assert.commandWorked(coll.update({a: {b: 1}}, {a: {b: 1}}, {upsert: true})); assert.eq(1, |