From 5acc06f3908d99617d533ecc9e63c99b04f1ffea Mon Sep 17 00:00:00 2001 From: Ark2307 Date: Fri, 6 Dec 2024 15:34:43 +0530 Subject: [PATCH 1/2] Changing write concern for mongo --- .../main/java/com/akto/listener/InitializerListener.java | 5 ++++- libs/dao/src/main/java/com/akto/DaoInit.java | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/dashboard/src/main/java/com/akto/listener/InitializerListener.java b/apps/dashboard/src/main/java/com/akto/listener/InitializerListener.java index c10d5def87..8d92e30eb3 100644 --- a/apps/dashboard/src/main/java/com/akto/listener/InitializerListener.java +++ b/apps/dashboard/src/main/java/com/akto/listener/InitializerListener.java @@ -118,6 +118,7 @@ import com.mongodb.BasicDBObject; import com.mongodb.ConnectionString; import com.mongodb.ReadPreference; +import com.mongodb.WriteConcern; import com.mongodb.bulk.BulkWriteResult; import com.mongodb.client.MongoCursor; import com.mongodb.client.model.*; @@ -2245,10 +2246,12 @@ public void contextInitialized(javax.servlet.ServletContextEvent sce) { public void run() { ReadPreference readPreference = ReadPreference.primary(); + WriteConcern writeConcern = WriteConcern.ACKNOWLEDGED; if (runJobFunctions || DashboardMode.isSaasDeployment()) { readPreference = ReadPreference.secondary(); + writeConcern = WriteConcern.W1; } - DaoInit.init(new ConnectionString(mongoURI), readPreference); + DaoInit.init(new ConnectionString(mongoURI), readPreference, writeConcern); connectedToMongo = false; do { diff --git a/libs/dao/src/main/java/com/akto/DaoInit.java b/libs/dao/src/main/java/com/akto/DaoInit.java index 995eee2c10..7e4ea5a2fe 100644 --- a/libs/dao/src/main/java/com/akto/DaoInit.java +++ b/libs/dao/src/main/java/com/akto/DaoInit.java @@ -72,6 +72,7 @@ import com.mongodb.ConnectionString; import com.mongodb.MongoClientSettings; import com.mongodb.ReadPreference; +import com.mongodb.WriteConcern; import com.mongodb.client.MongoClients; import org.bson.codecs.configuration.CodecRegistries; @@ -351,7 +352,7 @@ public static CodecRegistry createCodecRegistry(){ customEnumCodecs); } - public static void init(ConnectionString connectionString, ReadPreference readPreference) { + public static void init(ConnectionString connectionString, ReadPreference readPreference, WriteConcern writeConcern) { DbMode.refreshDbType(connectionString.getConnectionString()); logger.info("DB type: {}", DbMode.dbType); DbMode.refreshSetupType(connectionString); @@ -361,6 +362,7 @@ public static void init(ConnectionString connectionString, ReadPreference readPr MongoClientSettings clientSettings = MongoClientSettings.builder() .readPreference(readPreference) + .writeConcern(writeConcern) .applyConnectionString(connectionString) .codecRegistry(codecRegistry) .build(); @@ -368,7 +370,7 @@ public static void init(ConnectionString connectionString, ReadPreference readPr clients[0] = MongoClients.create(clientSettings); } public static void init(ConnectionString connectionString) { - init(connectionString, ReadPreference.secondary()); + init(connectionString, ReadPreference.secondary(), WriteConcern.ACKNOWLEDGED); } public static void createIndices() { From 3f36c8d301c5d49476f2d5b868d77bea30a0ff57 Mon Sep 17 00:00:00 2001 From: Ark2307 Date: Fri, 6 Dec 2024 15:38:15 +0530 Subject: [PATCH 2/2] Changing read preference --- .../src/main/java/com/akto/listener/InitializerListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dashboard/src/main/java/com/akto/listener/InitializerListener.java b/apps/dashboard/src/main/java/com/akto/listener/InitializerListener.java index 8d92e30eb3..49edc7e5aa 100644 --- a/apps/dashboard/src/main/java/com/akto/listener/InitializerListener.java +++ b/apps/dashboard/src/main/java/com/akto/listener/InitializerListener.java @@ -2248,7 +2248,7 @@ public void run() { ReadPreference readPreference = ReadPreference.primary(); WriteConcern writeConcern = WriteConcern.ACKNOWLEDGED; if (runJobFunctions || DashboardMode.isSaasDeployment()) { - readPreference = ReadPreference.secondary(); + readPreference = ReadPreference.primary(); writeConcern = WriteConcern.W1; } DaoInit.init(new ConnectionString(mongoURI), readPreference, writeConcern);