Open
Description
Related to but different than #815
const pgsql = postgres({
host: "host1,host2,host3",
port: 5432,
user: "username",
password: "password",
database: "app",
target_session_attrs: primary,
max: 20,
connect_timeout: 3
});
when host1
is offline, resulting in a CONNECT_TIMEOUT on the socket then the postgres client errors with the following and does not attempt to connect to host2
or host3
:
Error: write CONNECT_TIMEOUT host1:5432
Stack: Error: write CONNECT_TIMEOUT host1:5432
at connectTimedOut (node_modules/.pnpm/[email protected]/node_modules/postgres/cjs/src/connection.js:257:20)
at Timeout.done [as _onTimeout] (node_modules/.pnpm/[email protected]/node_modules/postgres/cjs/src/connection.js:1033:8)
at listOnTimeout (node:internal/timers:596:11)
at process.processTimers (node:internal/timers:529:7)
when host1
is online, but not listening on port
then the postgres library connects to host2
or host3
, as appropriate based on primary
session attrs.
when we change our config to only connect to host1
when it is not listening on port
:
const pgsql = postgres({
host: "host1",
port: 5432,
user: "username",
password: "password",
database: "app",
max: 20,
});
we get the following error when trying to connect to the db via this postgres client library
Error:
Stack: AggregateError [ECONNREFUSED]:
at internalConnectMultiple (node:net:1121:18)
at internalConnectMultiple (node:net:1189:5)
at afterConnectMultiple (node:net:1688:7)
It's as if ECONNREFUSED
is handled in the desired way but CONNECT_TIMEOUT
is not.
Metadata
Metadata
Assignees
Labels
No labels