summaryrefslogtreecommitdiff
path: root/jstests/core/write/update/updatej.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/core/write/update/updatej.js')
-rw-r--r--jstests/core/write/update/updatej.js16
1 files changed, 16 insertions, 0 deletions
diff --git a/jstests/core/write/update/updatej.js b/jstests/core/write/update/updatej.js
new file mode 100644
index 00000000000..bab2a32f45f
--- /dev/null
+++ b/jstests/core/write/update/updatej.js
@@ -0,0 +1,16 @@
+// Test that update validation failure terminates the update without modifying subsequent
+// documents. SERVER-4779
+// This test uses a multi-update, which is not retryable. The behavior it is testing is also not
+// true of sharded clusters, since one shard may continue applying updates while the other
+// encounters an error.
+// @tags: [requires_multi_updates, requires_non_retryable_writes, assumes_unsharded_collection]
+
+t = db.jstests_updatej;
+t.drop();
+
+t.save({a: []});
+t.save({a: 1});
+t.save({a: []});
+
+assert.writeError(t.update({}, {$push: {a: 2}}, false, true));
+assert.eq(1, t.count({a: 2}));