From 93e86b32804a9363bf2be3ade06c03af7fdc9cab Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 25 Apr 2025 16:26:10 -0700 Subject: [PATCH 1/2] wait for primary --- docker/prod/mongo/init/init.js | 64 ++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 27 deletions(-) diff --git a/docker/prod/mongo/init/init.js b/docker/prod/mongo/init/init.js index 81d501bc7..34b90ced3 100644 --- a/docker/prod/mongo/init/init.js +++ b/docker/prod/mongo/init/init.js @@ -1,31 +1,41 @@ -function waitForPrimary() { - while (true) { - try { - rs.initiate({ - _id: "rs0", - members: [{ _id: 0, host: "localhost:27017" }], - }); - break; - } catch (e) { - print("Replica set initiation failed, retrying in 2s..."); - sleep(2000); - } +function initiateReplicaSet() { + try { + rs.initiate({ + _id: "rs0", + members: [{ _id: 0, host: "localhost:27017" }], + }); + } catch (e) { + print("Replica set already initiated or error occurred: " + e); } } +function waitForPrimary() { + while (true) { + const isMaster = db.isMaster(); + if (isMaster.ismaster) { + print("This node is now PRIMARY."); + break; + } + print("Waiting to become PRIMARY..."); + sleep(2000); + } +} + +function createUser() { + db = db.getSiblingDB("uptime_db"); + + var username = process.env.USERNAME_ENV_VAR; + var password = process.env.PASSWORD_ENV_VAR; + + db.createUser({ + user: username, + pwd: password, + roles: [{ role: "readWrite", db: "uptime_db" }], + }); + + print("User '" + username + "' created successfully"); +} + +initiateReplicaSet(); waitForPrimary(); - -// Switch to uptime_db -db = db.getSiblingDB("uptime_db"); - -// Create app user -var username = _getEnv("USERNAME_ENV_VAR"); -var password = _getEnv("PASSWORD_ENV_VAR"); - -db.createUser({ - user: username, - pwd: password, - roles: [{ role: "readWrite", db: "uptime_db" }], -}); - -print("User '" + username + "' created successfully"); +createUser(); From f232075a970d7a6c33ba6c28da454f87bf8d1d60 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 25 Apr 2025 16:28:19 -0700 Subject: [PATCH 2/2] log connection string --- server/db/mongo/MongoDB.js | 1 + 1 file changed, 1 insertion(+) diff --git a/server/db/mongo/MongoDB.js b/server/db/mongo/MongoDB.js index 8237504d6..dd9826de5 100755 --- a/server/db/mongo/MongoDB.js +++ b/server/db/mongo/MongoDB.js @@ -96,6 +96,7 @@ class MongoDB { try { const connectionString = process.env.DB_CONNECTION_STRING || "mongodb://localhost:27017/uptime_db"; + console.log("Connecting to MongoDB with connection string:", connectionString); await mongoose.connect(connectionString); // If there are no AppSettings, create one await AppSettings.findOneAndUpdate(