Re: Multiple hosts in connection string failed to failover in non-hot standby mode

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Justin Pryzby <pryzby@telsasoft.com>, Hubert Zhang <zhubert@vmware.com>, tsunakawa.takay@fujitsu.com, pgsql-hackers@postgresql.org, Andreas Seltenreich <seltenreich@gmx.de>, Bruce Momjian <bruce@momjian.us>
Date: 2021-06-01T00:56:47Z
Lists: pgsql-hackers
On Mon, May 31, 2021 at 09:36:20AM -0400, Tom Lane wrote:
> Interesting --- I was considering running such a test locally, but
> didn't get round to it yet.

Just to be clear, that's my Windows dev box.

> It seems like the ideal solution would be to make pg_GSS_have_cred_cache
> smarter, so that we don't attempt a GSS connection cycle here.

I am not sure yet what would be adapted here.  That requires diving a
bit into the upstream code.

>> Another thing that strikes me as incorrect is that we don't unset
>> PGGSSENCMODE or PGGSSLIB in TestLib.pm.  Just noting it on the way..
>
> Agreed, that seems bogus.

There may be others, and I have not checked yet.  I'd rather do a
backpatch for this part, would you agree?
--
Michael

Commits

  1. Clear conn->errorMessage at successful completion of PQconnectdb().

  2. Avoid ECPG test failures in some GSS-capable environments.

  3. Try next host after a "cannot connect now" failure.

  4. Uniformly identify the target host in libpq connection failure reports.

  5. Allow pg_regress.c wrappers to postprocess test result files.

  6. In libpq, always append new error messages to conn->errorMessage.