Re: Proposal: Implement failover on libpq connect level.

Albe Laurenz <laurenz.albe@wien.gv.at>

From: Albe Laurenz <laurenz.albe@wien.gv.at>
To: 'PostgreSQL - Hans-Jürgen Schönig *EXTERN*' <postgres@cybertec.at>
Cc: Victor Wagner *EXTERN* <vitus@wagner.pp.ru>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2015-08-18T09:19:03Z
Lists: pgsql-hackers
Hans-Jürgen Schönig wrote:
> in addition to that you have the “problem” of transactions. if you failover in the middle
> of a transaction, strange things might happen from the application point of view.
> 
> the good thing, however, is that stupid middleware is sometimes not able to handle
> failed connections. however, overall i think it is more of a danger than a benefit.

Maybe I misunderstood the original proposal, but my impression was that the alternative
servers would be tried only at the time the connection is established, and there would be no
such problems as you describe.

Those could only happen if libpq automatically tried to reconnect upon failure without
the client noticing.

So the stupid middleware would get an error message, but the reconnect would actually work.

Yours,
Laurenz Albe

Commits

  1. libpq: Add target_session_attrs parameter.

  2. Remove superuser checks in pgstattuple

  3. Fix unwanted flushing of libpq's input buffer when socket EOF is seen.