diff --git a/src/main/java/com/mongodb/spark/sql/connector/config/WriteConfig.java b/src/main/java/com/mongodb/spark/sql/connector/config/WriteConfig.java index cee9be25..e5d0082b 100644 --- a/src/main/java/com/mongodb/spark/sql/connector/config/WriteConfig.java +++ b/src/main/java/com/mongodb/spark/sql/connector/config/WriteConfig.java @@ -344,7 +344,10 @@ private String getNamespaceDescription(final CollectionsConfig collectionsConfig } private WriteConcern createWriteConcern() { - WriteConcern writeConcern = WriteConcern.ACKNOWLEDGED; + WriteConcern writeConcern = getConnectionString().getWriteConcern(); + if (writeConcern == null) { + writeConcern = WriteConcern.ACKNOWLEDGED; + } try { if (containsKey(WRITE_CONCERN_W_CONFIG)) { try { diff --git a/src/test/java/com/mongodb/spark/sql/connector/config/MongoConfigTest.java b/src/test/java/com/mongodb/spark/sql/connector/config/MongoConfigTest.java index 8a03da44..22e8ed20 100644 --- a/src/test/java/com/mongodb/spark/sql/connector/config/MongoConfigTest.java +++ b/src/test/java/com/mongodb/spark/sql/connector/config/MongoConfigTest.java @@ -126,6 +126,18 @@ void testMongoConfigWriteConcern() { writeConfig = writeConfig.withOption( WriteConfig.WRITE_PREFIX + WriteConfig.WRITE_CONCERN_W_CONFIG, "region1"); assertEquals(new WriteConcern("region1"), writeConfig.getWriteConcern()); + + writeConfig = MongoConfig.createConfig(CONFIG_MAP).toWriteConfig(); + writeConfig.withOption(MongoConfig.CONNECTION_STRING_CONFIG, "mongodb://localhost/"); + assertEquals(WriteConcern.ACKNOWLEDGED, writeConfig.getWriteConcern()); + + writeConfig = writeConfig.withOption( + MongoConfig.CONNECTION_STRING_CONFIG, "mongodb://localhost/?w=majority"); + assertEquals(WriteConcern.MAJORITY, writeConfig.getWriteConcern()); + + // Explicit configuration beats connection string + writeConfig = writeConfig.withOption(WriteConfig.WRITE_CONCERN_W_CONFIG, "3"); + assertEquals(3, writeConfig.getWriteConcern().getW()); } @Test