Re: Intermittent buildfarm failures on wrasse

Peter Geoghegan <pg@bowt.ie>

From: Peter Geoghegan <pg@bowt.ie>
To: Andres Freund <andres@anarazel.de>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Noah Misch <noah@leadboat.com>, David Rowley <dgrowleyml@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2022-04-17T15:29:50Z
Lists: pgsql-hackers
On Sun, Apr 17, 2022 at 7:36 AM Andres Freund <andres@anarazel.de> wrote:
> > Part of the problem here is that we determine VACUUM's FreezeLimit by
> > calculating `OldestXmin - vacuum_freeze_min_age` (more or less [1]).
>
> What the message outputs is OldestXmin and not FreezeLimit though.

My higher level point is that there is a general tendency to assume
that OldestXmin is the same thing as NextXID, which it isn't. It's an
easy enough mistake to make, though, in part because they're usually
quite close together. The "Routine Vacuuming" docs seem to suggest
that they're the same thing, or at least that's what I take away from
the following sentence:

"This implies that if a table is not otherwise vacuumed, autovacuum
will be invoked on it approximately once every
autovacuum_freeze_max_age minus vacuum_freeze_min_age transactions".

>  And FreezeLimit doesn't affect "dead but not yet removable".

But OldestXmin affects FreezeLimit.

Anyway, I'm not opposed to showing the age at the start as well. But
from the point of view of issues like this tenk1 issue, it would be
more useful to just report on new_rel_allvisible. It would also be
more useful to users.

-- 
Peter Geoghegan



Commits

  1. Repurpose PROC_COPYABLE_FLAGS as PROC_XMIN_FLAGS

  2. Tighten ComputeXidHorizons' handling of walsenders.

  3. Adjust VACUUM's removable cutoff log message.

  4. Temporarily add some probes of tenk1's relallvisible in create_index.sql.

  5. Set synchronous_commit=on in test_setup.sql.

  6. Rearrange core regression tests to reduce cross-script dependencies.

  7. snapshot scalability: Don't compute global horizons while building snapshots.