hot_standby_feedback vs excludeVacuum and snapshots - Mailing list pgsql-hackers

From Greg Stark
Subject hot_standby_feedback vs excludeVacuum and snapshots
Date
Msg-id CAM-w4HO_8yVDGfamyuhAp4kuLfHCpc_VTE3Bntmnk8kVix67fw@mail.gmail.com
Whole thread Raw
Responses Re: hot_standby_feedback vs excludeVacuum and snapshots  (Amit Kapila <amit.kapila16@gmail.com>)
Re: hot_standby_feedback vs excludeVacuum and snapshots  (Andres Freund <andres@anarazel.de>)
List pgsql-hackers
I'm poking around to see debug a vacuuming problem and wondering if
I've found something more serious.

As far as I can tell the snapshots on HOT standby are built using a
list of running xids that the primary builds and puts in the WAL and
that seems to include all xids from transactions running in all
databases. The HOT standby would then build a snapshot and eventually
send the xmin of that snapshot back to the primary in the hot standby
feedback and that would block vacuuming tuples that might be visible
to the standby.

Many ages ago Alvaro sweated blood to ensure vacuums could run for
long periods of time without holding back the xmin horizon and
blocking other vacuums from cleaning up tuples. That's the purpose of
the excludeVacuum flag in GetCurrentVirtualXIDs(). That's possible
because we know vacuums won't insert any tuples that queries might try
to view and also vacuums won't try to perform any sql queries on other
tables.

I can't find anywhere that the standby snapshot building mechanism
gets this same information about which xids are actually vacuums that
can be ignored when building a snapshot. So I'm concerned that the hot
standby sending back its xmin would be effectively undermining this
mechanism and forcing vacuum xids to be included in the xmin horizon
and prevent vacuuming of tuples.

Am I missing something obvious? Is this a known problem?

-- 
greg


pgsql-hackers by date:

Previous
From: David Rowley
Date:
Subject: Re: [HACKERS] path toward faster partition pruning
Next
From: Alexander Korotkov
Date:
Subject: Fix src/test/subscription/t/003_constraints.pl header comment