fix: parse DATABASE_URL in pool clients + extend Ollama health timeout to 15s
Gateway and learning DB clients now prefer DATABASE_URL connection string over individual DB_* env vars — matches ecosystem.config.cjs convention. Ollama health check timeout increased 5→15s for Cloudflare tunnel latency.
This commit is contained in:
parent
4c5003f9fc
commit
773fd368e0
@ -5,18 +5,35 @@ const { Pool } = pg;
|
|||||||
|
|
||||||
let pool: pg.Pool | null = null;
|
let pool: pg.Pool | null = null;
|
||||||
|
|
||||||
export function getPool(): pg.Pool {
|
/**
|
||||||
if (!pool) {
|
* Build pool config from DATABASE_URL (preferred) or individual DB_* env vars.
|
||||||
pool = new Pool({
|
* DATABASE_URL format: postgresql://user:password@host:port/database
|
||||||
host: process.env['DB_HOST'] ?? 'localhost',
|
*/
|
||||||
port: parseInt(process.env['DB_PORT'] ?? '5432', 10),
|
function buildPoolConfig(): pg.PoolConfig {
|
||||||
database: process.env['DB_NAME'] ?? 'llm_gateway',
|
const databaseUrl = process.env['DATABASE_URL'];
|
||||||
user: process.env['DB_USER'] ?? 'llm_gateway',
|
if (databaseUrl) {
|
||||||
password: process.env['DB_PASSWORD'] ?? '',
|
return {
|
||||||
|
connectionString: databaseUrl,
|
||||||
max: 10,
|
max: 10,
|
||||||
idleTimeoutMillis: 30_000,
|
idleTimeoutMillis: 30_000,
|
||||||
connectionTimeoutMillis: 5_000,
|
connectionTimeoutMillis: 5_000,
|
||||||
});
|
};
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
host: process.env['DB_HOST'] ?? 'localhost',
|
||||||
|
port: parseInt(process.env['DB_PORT'] ?? '5432', 10),
|
||||||
|
database: process.env['DB_NAME'] ?? 'llm_gateway',
|
||||||
|
user: process.env['DB_USER'] ?? 'llm',
|
||||||
|
password: process.env['DB_PASSWORD'] ?? '',
|
||||||
|
max: 10,
|
||||||
|
idleTimeoutMillis: 30_000,
|
||||||
|
connectionTimeoutMillis: 5_000,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getPool(): pg.Pool {
|
||||||
|
if (!pool) {
|
||||||
|
pool = new Pool(buildPoolConfig());
|
||||||
|
|
||||||
pool.on('error', (err) => {
|
pool.on('error', (err) => {
|
||||||
logger.error({ err }, 'PostgreSQL pool error');
|
logger.error({ err }, 'PostgreSQL pool error');
|
||||||
|
|||||||
@ -21,7 +21,7 @@ async function checkOllama(baseUrl: string): Promise<{ status: 'ok' | 'down'; la
|
|||||||
const start = Date.now();
|
const start = Date.now();
|
||||||
try {
|
try {
|
||||||
const response = await fetch(`${baseUrl}/api/tags`, {
|
const response = await fetch(`${baseUrl}/api/tags`, {
|
||||||
signal: AbortSignal.timeout(5000),
|
signal: AbortSignal.timeout(15000),
|
||||||
});
|
});
|
||||||
const latency_ms = Date.now() - start;
|
const latency_ms = Date.now() - start;
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
|
|||||||
@ -5,18 +5,26 @@ const { Pool } = pg;
|
|||||||
|
|
||||||
let pool: pg.Pool | null = null;
|
let pool: pg.Pool | null = null;
|
||||||
|
|
||||||
|
function buildPoolConfig(): pg.PoolConfig {
|
||||||
|
const databaseUrl = process.env['DATABASE_URL'];
|
||||||
|
if (databaseUrl) {
|
||||||
|
return { connectionString: databaseUrl, max: 5, idleTimeoutMillis: 30_000, connectionTimeoutMillis: 5_000 };
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
host: process.env['DB_HOST'] ?? 'localhost',
|
||||||
|
port: parseInt(process.env['DB_PORT'] ?? '5432', 10),
|
||||||
|
database: process.env['DB_NAME'] ?? 'llm_gateway',
|
||||||
|
user: process.env['DB_USER'] ?? 'llm',
|
||||||
|
password: process.env['DB_PASSWORD'] ?? '',
|
||||||
|
max: 5,
|
||||||
|
idleTimeoutMillis: 30_000,
|
||||||
|
connectionTimeoutMillis: 5_000,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export function getPool(): pg.Pool {
|
export function getPool(): pg.Pool {
|
||||||
if (!pool) {
|
if (!pool) {
|
||||||
pool = new Pool({
|
pool = new Pool(buildPoolConfig());
|
||||||
host: process.env['DB_HOST'] ?? 'localhost',
|
|
||||||
port: parseInt(process.env['DB_PORT'] ?? '5432', 10),
|
|
||||||
database: process.env['DB_NAME'] ?? 'llm_gateway',
|
|
||||||
user: process.env['DB_USER'] ?? 'llm',
|
|
||||||
password: process.env['DB_PASSWORD'] ?? '',
|
|
||||||
max: 5,
|
|
||||||
idleTimeoutMillis: 30_000,
|
|
||||||
connectionTimeoutMillis: 5_000,
|
|
||||||
});
|
|
||||||
|
|
||||||
pool.on('error', (err) => {
|
pool.on('error', (err) => {
|
||||||
logger.error({ err }, 'PostgreSQL pool error (learning engine)');
|
logger.error({ err }, 'PostgreSQL pool error (learning engine)');
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user