From 2eaa8754f45d507adefb473eb6cb611cf7a39a77 Mon Sep 17 00:00:00 2001
From: "pierre.bouteloup"
Date: Thu, 18 Feb 2021 09:22:52 +0100
Subject: [PATCH] fix: unmerged writeConcern options
---
lib/db.js | 3 ++-
lib/utils.js | 5 +----
2 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/lib/db.js b/lib/db.js
index 40c51f9e217..f2ed4530637 100644
--- a/lib/db.js
+++ b/lib/db.js
@@ -388,6 +388,7 @@ const collectionKeys = [
'serializeFunctions',
'strict',
'readConcern',
+ 'writeConcern',
'ignoreUndefined',
'promoteValues',
'promoteBuffers',
@@ -434,7 +435,7 @@ Db.prototype.collection = function(name, options, callback) {
}
// Merge in all needed options and ensure correct writeConcern merging from db level
- options = mergeOptionsAndWriteConcern(options, this.s.options, collectionKeys, true);
+ options = mergeOptionsAndWriteConcern(options, this.s.options, collectionKeys);
// Execute
if (options == null || !options.strict) {
diff --git a/lib/utils.js b/lib/utils.js
index 0ebbb4565af..e95c809047a 100644
--- a/lib/utils.js
+++ b/lib/utils.js
@@ -290,7 +290,7 @@ var filterOptions = function(options, names) {
var writeConcernKeys = ['w', 'j', 'wtimeout', 'fsync'];
// Merge the write concern options
-var mergeOptionsAndWriteConcern = function(targetOptions, sourceOptions, keys, mergeWriteConcern) {
+var mergeOptionsAndWriteConcern = function(targetOptions, sourceOptions, keys) {
// Mix in any allowed options
for (var i = 0; i < keys.length; i++) {
if (!targetOptions[keys[i]] && sourceOptions[keys[i]] !== undefined) {
@@ -298,9 +298,6 @@ var mergeOptionsAndWriteConcern = function(targetOptions, sourceOptions, keys, m
}
}
- // No merging of write concern
- if (!mergeWriteConcern) return targetOptions;
-
// Found no write Concern options
var found = false;
for (i = 0; i < writeConcernKeys.length; i++) {