• Michael Paquier's avatar
    Revert "Skip redundant anti-wraparound vacuums" · dd9ac7d5
    Michael Paquier authored
    This reverts commit 2aa6e331, that added a fast path to skip
    anti-wraparound and non-aggressive autovacuum jobs (these have no sense
    as anti-wraparound implies aggressive).  With a cluster using a high
    amount of relations with a portion of them being heavily updated, this
    could cause autovacuum to lock down, with autovacuum workers attempting
    repeatedly those jobs on the same relations for the same database, that
    just kept being skipped.  This lock down can be solved with a manual
    VACUUM FREEZE.
    
    Justin King has reported one environment where the issue happened, and
    Julien Rouhaud and I have been able to reproduce it in a second
    environment.  With a very aggressive autovacuum_freeze_max_age,
    triggering those jobs with pgbench is a matter of minutes, and hitting
    the lock down is a lot harder (my local tests failed to do that).
    
    Note that anti-wraparound and non-aggressive jobs can only be triggered
    on a subset of shared catalogs:
    - pg_auth_members
    - pg_authid
    - pg_database
    - pg_replication_origin
    - pg_shseclabel
    - pg_subscription
    - pg_tablespace
    While the lock down was possible down to v12, the root cause of those
    jobs is a much older issue, which needs more analysis.
    
    Bonus thanks to Andres Freund for the discussion.
    
    Reported-by: Justin King
    Discussion: https://postgr.es/m/CAE39h22zPLrkH17GrkDgAYL3kbjvySYD1io+rtnAUFnaJJVS4g@mail.gmail.com
    Backpatch-through: 12
    dd9ac7d5
vacuumlazy.c 111 KB