From 2d532e42c64da44c050a8417e12830ceb8d1feda Mon Sep 17 00:00:00 2001 From: josedario87 Date: Fri, 21 Nov 2025 20:04:42 -0600 Subject: [PATCH] =?UTF-8?q?Agregar=20retry=20logic=20para=20conexi=C3=B3n?= =?UTF-8?q?=20inicial=20a=20PostgreSQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Implementar 5 reintentos con 2s de delay entre cada uno - Resolver error de autenticación en primera carga - PostgreSQL necesita tiempo para ejecutar 00_configure_auth.sh - App ahora espera automáticamente hasta que auth esté configurado Esto resuelve el error 28P01 (password authentication failed) que ocurría solo en la primera conexión después del deploy. --- nuxt4/server/utils/db.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/nuxt4/server/utils/db.ts b/nuxt4/server/utils/db.ts index 1379506..3633d61 100644 --- a/nuxt4/server/utils/db.ts +++ b/nuxt4/server/utils/db.ts @@ -23,6 +23,7 @@ export function getPool(): pg.Pool { pool = new Pool(config) + // Manejo de errores del pool pool.on('error', (err) => { console.error('Error inesperado en el pool de PostgreSQL:', err) }) @@ -33,6 +34,27 @@ export function getPool(): pg.Pool { console.log('Nueva conexión establecida con PostgreSQL') }) } + + // Verificar conexión inicial con retry + let retries = 5 + const tryConnect = async () => { + try { + const client = await pool!.connect() + console.log('✅ Conexión inicial a PostgreSQL exitosa') + client.release() + } catch (err: any) { + retries-- + if (retries > 0) { + console.log(`⚠️ Conexión a PostgreSQL falló, reintentando... (${retries} intentos restantes)`) + setTimeout(tryConnect, 2000) // Reintentar en 2 segundos + } else { + console.error('❌ No se pudo conectar a PostgreSQL después de varios intentos:', err.message) + } + } + } + + // Ejecutar verificación inicial en background + tryConnect() } return pool