From 871931b460b17b2f984120ba67e44fa59889eb02 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 15 Feb 2025 14:23:54 -0600 Subject: [PATCH] fix: handle race condition to catch recreation base containers --- packages/server/src/setup/postgres-setup.ts | 10 ++++++++-- packages/server/src/setup/redis-setup.ts | 9 ++++++++- packages/server/src/setup/traefik-setup.ts | 9 ++++++++- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/packages/server/src/setup/postgres-setup.ts b/packages/server/src/setup/postgres-setup.ts index b5794c2b..8e11e8cc 100644 --- a/packages/server/src/setup/postgres-setup.ts +++ b/packages/server/src/setup/postgres-setup.ts @@ -54,10 +54,16 @@ export const initializePostgres = async () => { version: Number.parseInt(inspect.Version.Index), ...settings, }); - console.log("Postgres Started ✅"); } catch (error) { - await docker.createService(settings); + try { + await docker.createService(settings); + } catch (error: any) { + if (error?.statusCode !== 409) { + throw error; + } + console.log("Postgres service already exists, continuing..."); + } console.log("Postgres Not Found: Starting ✅"); } }; diff --git a/packages/server/src/setup/redis-setup.ts b/packages/server/src/setup/redis-setup.ts index 1c3b545a..0a191d11 100644 --- a/packages/server/src/setup/redis-setup.ts +++ b/packages/server/src/setup/redis-setup.ts @@ -53,7 +53,14 @@ export const initializeRedis = async () => { }); console.log("Redis Started ✅"); } catch (error) { - await docker.createService(settings); + try { + await docker.createService(settings); + } catch (error: any) { + if (error?.statusCode !== 409) { + throw error; + } + console.log("Redis service already exists, continuing..."); + } console.log("Redis Not Found: Starting ✅"); } }; diff --git a/packages/server/src/setup/traefik-setup.ts b/packages/server/src/setup/traefik-setup.ts index 1d60e577..21caa5cf 100644 --- a/packages/server/src/setup/traefik-setup.ts +++ b/packages/server/src/setup/traefik-setup.ts @@ -128,7 +128,14 @@ export const initializeTraefik = async ({ console.log("Traefik Started ✅"); } catch (error) { - await docker.createService(settings); + try { + await docker.createService(settings); + } catch (error: any) { + if (error?.statusCode !== 409) { + throw error; + } + console.log("Traefik service already exists, continuing..."); + } console.log("Traefik Not Found: Starting ✅"); } };