mongo/jstests/replsets/write_concern_write_to_loca...

42 lines
1.5 KiB
JavaScript

/*
* Tests that we are silently ignoring writeConcern when we write to local db.
*/
import {ReplSetTest} from "jstests/libs/replsettest.js";
import {restartReplicationOnSecondaries, stopReplicationOnSecondaries} from "jstests/libs/write_concern_util.js";
const rst = new ReplSetTest({nodes: [{}, {rsConfig: {priority: 0}}], nodeOptions: {setParameter: {logLevel: 1}}});
rst.startSet();
rst.initiate();
const primary = rst.getPrimary();
const primaryDB = primary.getDB("local");
const primaryColl = primaryDB["test"];
const secondary = rst.getSecondary();
const secondaryDB = secondary.getDB("local");
const secondaryColl = secondaryDB["test"];
jsTestLog("Write to local db on the secondary node should succeed.");
secondaryColl.insertOne({x: 1});
secondaryColl.insertOne({x: 2}, {writeConcern: {w: 1}});
secondaryColl.insertOne({x: 3}, {writeConcern: {w: 2}});
jsTestLog("Stop replication to prevent primary from satisfying majority write-concern.");
stopReplicationOnSecondaries(rst, false /* changeReplicaSetDefaultWCToLocal */);
// Advance the primary opTime by doing local dummy write.
assert.commandWorked(
rst
.getPrimary()
.getDB("dummy")
["dummy"].insert({x: "dummy"}, {writeConcern: {w: 1}}),
);
jsTestLog("Write to local db on the primary node should succeed.");
primaryColl.insertOne({x: 4});
primaryColl.insertOne({x: 5}, {writeConcern: {w: 1}});
primaryColl.insertOne({x: 6}, {writeConcern: {w: 2}});
restartReplicationOnSecondaries(rst);
rst.stopSet();