From c2c43b1e2248bb2c48599f8f83f29568dc102a4d Mon Sep 17 00:00:00 2001 From: Blake Matthes Date: Fri, 14 Mar 2025 07:36:15 -0500 Subject: [PATCH] feat(sql server): added ping check to make sure the server is online before we try to connect --- server/services/sqlServer/prodSqlServer.ts | 8 ++++++++ server/services/sqlServer/sqlService.ts | 5 ++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/server/services/sqlServer/prodSqlServer.ts b/server/services/sqlServer/prodSqlServer.ts index cd4d39d..09f4c7f 100644 --- a/server/services/sqlServer/prodSqlServer.ts +++ b/server/services/sqlServer/prodSqlServer.ts @@ -5,10 +5,18 @@ import {db} from "../../../database/dbclient.js"; import {settings} from "../../../database/schema/settings.js"; import {eq} from "drizzle-orm"; import {installed} from "../../index.js"; +import {checkHostnamePort} from "../../globalUtils/pingServer.js"; let pool: any; let connected: boolean = false; export const initializeProdPool = async () => { + const dbServer = await db.select().from(settings).where(eq(settings.name, "dbServer")); + const serverUp = await checkHostnamePort(`${dbServer[0].value}:1433`); + + if (!serverUp) { + createLog("error", "lst", "server", `The sql ${dbServer[0].value} is not reachable`); + return; + } if (!installed) { createLog("info", "lst", "sqlProd", "The server was not installed will reconnect in 5 seconds"); setTimeout(() => { diff --git a/server/services/sqlServer/sqlService.ts b/server/services/sqlServer/sqlService.ts index 51a992c..d2d9eaa 100644 --- a/server/services/sqlServer/sqlService.ts +++ b/server/services/sqlServer/sqlService.ts @@ -7,10 +7,9 @@ import restart from "./route/restartProdSql.js"; const app = new OpenAPIHono(); -// intially start the pool up. -setTimeout(() => { +setTimeout(async () => { initializeProdPool(); -}, 500); +}, 2 * 1000); app.route("/sqlprod/connect", connect); app.route("/sqlprod/close", closeConnection);