Re: Recovering from detoast-related catcache invalidations

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Heikki Linnakangas <hlinnaka@iki.fi>
Cc: Noah Misch <noah@leadboat.com>, Tom Lane <tgl@sss.pgh.pa.us>, Xiaoran Wang <fanfuxiaoran@gmail.com>, pgsql-hackers@lists.postgresql.org
Date: 2025-09-19T20:11:43Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix catcache invalidation of a list entry that's being built

  2. Cope with inplace update making catcache stale during TOAST fetch.

  3. Add previous commit to .git-blame-ignore-revs.

  4. Re-pgindent catcache.c after previous commit.

  5. Cope with catcache entries becoming stale during detoasting.

On 2025-03-26 07:21:43 -0400, Andres Freund wrote:
> On 2025-01-14 15:13:21 +0200, Heikki Linnakangas wrote:
> > Committed with those fixes. Thanks for the review!
> 
> The test doesn't seem entirely stable. E.g.
> https://cirrus-ci.com/task/6166374147424256
> failed spuriously:
> 
> [08:52:06.822](0.002s) # issuing query 1 via background psql: 
> #     SELECT injection_points_set_local();
> #     SELECT injection_points_attach('catcache-list-miss-systable-scan-started', 'wait');
> [08:52:06.851](0.029s) # results query 1:
> # {
> #   'stderr' => 'background_psql: QUERY_SEPARATOR 1:
> # ',
> #   'stdout' => '
> # 
> # background_psql: QUERY_SEPARATOR 1:
> # '
> # }
> [08:52:06.893](0.042s) # issuing query 1 via background psql: 
> #     SELECT injection_points_wakeup('catcache-list-miss-systable-scan-started');
> #     SELECT injection_points_detach('catcache-list-miss-systable-scan-started');
> [08:52:06.897](0.004s) # pump_until: process terminated unexpectedly when searching for "(?^:(^|\n)background_psql: QUERY_SEPARATOR 1:\r?\n)" with stream: ""
> process ended prematurely at /tmp/cirrus-ci-build/src/test/perl/PostgreSQL/Test/Utils.pm line 440.
> 
> 
> 2025-03-25 08:52:06.896 UTC [34240][client backend] [007_catcache_inval.pl][4/2:0] ERROR:  could not find injection point catcache-list-miss-systable-scan-started to wake up
> 2025-03-25 08:52:06.896 UTC [34240][client backend] [007_catcache_inval.pl][4/2:0] STATEMENT:  SELECT injection_points_wakeup('catcache-list-miss-systable-scan-started');

And again: https://cirrus-ci.com/task/6082321633247232

Ping?