From 025009c4a28d52d6bb04d677413662b220be1880 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Sirois Date: Wed, 18 Feb 2026 01:22:36 +0400 Subject: [PATCH] fix: reduce verbose test output from poll errors and PG notices Remove redundant console.error() calls that dump full stack traces when log.error() already captures the message. Suppress PostgreSQL NOTICE messages (e.g. DROP DATABASE IF EXISTS on non-existent db) by adding a notice handler to the connection pool. Co-Authored-By: Claude Opus 4.6 --- src/remote/query-loader.ts | 1 - src/remote/remote.ts | 4 ---- src/sql/postgresjs.ts | 3 +++ src/sync/pg-connector.ts | 1 - 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/remote/query-loader.ts b/src/remote/query-loader.ts index 330c72b..67d0973 100644 --- a/src/remote/query-loader.ts +++ b/src/remote/query-loader.ts @@ -81,7 +81,6 @@ export class QueryLoader extends EventEmitter { this.scheduleNextPoll(); } }, (error) => { - console.error(error); // we don't expect an error here. Better signal our exit this.emit("exit"); }); diff --git a/src/remote/remote.ts b/src/remote/remote.ts index f29a840..e2bf126 100644 --- a/src/remote/remote.ts +++ b/src/remote/remote.ts @@ -174,14 +174,12 @@ export class Remote extends EventEmitter { (results) => results.diffs, (error) => { log.error("Failed to poll schema", "remote"); - console.error(error); throw error; }, ) ?? [] as Op[], /* no panic in case schemaLoader has not loaded in yet */ this.pollQueriesOnce().catch((error) => { log.error("Failed to poll queries", "remote"); - console.error(error); throw error; }), ]); @@ -350,7 +348,6 @@ export class Remote extends EventEmitter { this.schemaLoader = new SchemaLoader(this.sourceManager, source); this.queryLoader.on("pollError", (error) => { log.error("Failed to poll queries", "remote"); - console.error(error); }); this.queryLoader.on("poll", (queries) => { this.optimizer.addQueries(queries).catch((error) => { @@ -358,7 +355,6 @@ export class Remote extends EventEmitter { `Failed to add ${queries.length} queries to optimizer`, "remote", ); - console.error(error); }); this.pgStatStatementsStatus = PgStatStatementsStatus.Installed; }).on("pgStatStatementsNotInstalled", () => { diff --git a/src/sql/postgresjs.ts b/src/sql/postgresjs.ts index 8cbbbce..b8341b4 100644 --- a/src/sql/postgresjs.ts +++ b/src/sql/postgresjs.ts @@ -103,6 +103,9 @@ export function wrapPgPool(pool: Pool): Postgres { // Handle idle client errors to prevent process crashes. // Expected during DROP DATABASE ... WITH (FORCE) which terminates // all connections to the target database. + pool.on("connect", (client) => { + client.on("notice", () => {}); + }); pool.on("error", (err) => { log.warn(`Pool idle client error: ${err.message}`, "postgres"); }); diff --git a/src/sync/pg-connector.ts b/src/sync/pg-connector.ts index 8ebbb14..6ef0ac4 100644 --- a/src/sync/pg-connector.ts +++ b/src/sync/pg-connector.ts @@ -507,7 +507,6 @@ ORDER BY ) { throw new ExtensionNotInstalledError("pg_stat_statements"); } - console.error(err); throw new PostgresError(err instanceof Error ? err.message : String(err)); } }