Re: Simplify backend terminate and wait logic in postgres_fdw test

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Fujii Masao <masao.fujii@oss.nttdata.com>
Date: 2021-05-04T08:22:06Z
Lists: pgsql-hackers
On Tue, May 04, 2021 at 12:43:53PM +0530, Bharath Rupireddy wrote:
> And having a retry test case with clobber cache enabled doesn't make
> sense because all the cache entries are removed/invalidated for each
> query, but the test case covers the code on non-clobber cache
> platforms, so I would like to keep it.

Yeah, I'd rather keep this test around as it is specific to connection
caches, and it is not time-consuming on fast machines in its new shape
either.  Another trick we could use here could be an aggregate
checking for the number of rows returned, say:
SELECT count(pg_terminate_backend(pid, 180000)) >= 0
  FROM pg_stat_activity
  WHERE application_name = 'fdw_retry_check';

But using CALL as you are suggesting is much cleaner.

(Worth noting that I am out this week for Golden Week, so if this can
wait until Monday, that would be nice.  I am not willing to take my
chances with the buildfarm now :p)
--
Michael

Commits

  1. Disable cache clobber to avoid breaking postgres_fdw termination test.

  2. Simplify tests of postgres_fdw terminating connections

  3. Add functions to wait for backend termination

  4. postgres_fdw: Fix tests for CLOBBER_CACHE_ALWAYS.