On Thu, Aug 9, 2018 at 11:23 AM, Tom Lane <t...@sss.pgh.pa.us> wrote:
> The patch that taught libpq about allowing multiple target hosts
> modified connectDBComplete() with the intent of making the
> connect_timeout (if specified) apply per-host, not to the complete
> connection attempt.  It did not do a very good job though, because
> the timeout only gets reset when connectDBComplete() itself detects
> a timeout.  If PQconnectPoll advances to a new host due to some
> other cause, the previous host's timeout continues to run, possibly
> causing a premature timeout failure for the new one.

Oops.

> Another thing that I find pretty strange is that it is coded so that,
> in event of a timeout detection by connectDBComplete, we give up on the
> current connhost entry and advance to the next host, ignoring any
> additional addresses we might have for the current hostname.  This seems
> at best poorly thought through.  There's no good reason for libpq to
> assume that all the addresses returned by DNS point at the same machine,
> or share the same network failure points in between.

Hmm, well, that was deliberate, but maybe ill-advised.  I guess I was
worried about making users wait for a long time to no gain, but your
points are valid, too.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

Reply via email to