From fb505278bdeedfb7ff9fc7973bbf4b2809f99d44 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 25 Apr 2025 15:07:44 -0700 Subject: [PATCH] wait for primary --- docker/prod/docker-compose.yaml | 4 +-- docker/prod/mongo/init/01_init_replica_set.js | 27 ++++++++++--------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/docker/prod/docker-compose.yaml b/docker/prod/docker-compose.yaml index dc1d53a7c..91d5e2643 100755 --- a/docker/prod/docker-compose.yaml +++ b/docker/prod/docker-compose.yaml @@ -52,7 +52,7 @@ services: - "27017:27017" volumes: - ./mongo/data:/data/db - - ./mongo/init/create_users.js:/docker-entrypoint-initdb.d/create_users.js - - ./mongo/init/init_replica_set.js:/docker-entrypoint-initdb.d/init_replica_set.js + - ./mongo/init/01_init_replica_set.js:/docker-entrypoint-initdb.d/01_init_replica_set.js + - ./mongo/init/02_create_users.js:/docker-entrypoint-initdb.d/02_create_users.js env_file: - mongo.env diff --git a/docker/prod/mongo/init/01_init_replica_set.js b/docker/prod/mongo/init/01_init_replica_set.js index 878ce68a6..2886c27aa 100644 --- a/docker/prod/mongo/init/01_init_replica_set.js +++ b/docker/prod/mongo/init/01_init_replica_set.js @@ -1,15 +1,16 @@ -try { - const status = rs.status(); - printjson(status); -} catch (e) { - if (e.codeName === "NotYetInitialized") { - print("Replica set not initialized. Initiating..."); - rs.initiate({ - _id: "rs0", - members: [{ _id: 0, host: "mongodb:27017" }], - }); - } else { - print("Unexpected error during rs.status():"); - printjson(e); +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); + } } } + +waitForPrimary();