pgsql: Ignore invalidated slots while computing oldest catalog Xmin

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Ignore invalidated slots while computing oldest catalog Xmin
Date: 2022-11-22 09:56:57
Message-ID: E1oxQ1Q-000L9j-V2@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Ignore invalidated slots while computing oldest catalog Xmin

Once a logical slot has acquired a catalog_xmin, it doesn't let go of
it, even when invalidated by exceeding the max_slot_wal_keep_size, which
means that dead catalog tuples are not removed by vacuum anymore since
the point is invalidated, until the slot is dropped. This could be
catastrophic if catalog churn is high.

Change the computation of Xmin to ignore invalidated slots,
to prevent dead rows from accumulating.

Backpatch to 13, where slot invalidation appeared.

Author: Sirisha Chamarthi <sirichamarthi22(at)gmail(dot)com>
Reviewed-by: Ashutosh Bapat <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com>
Discussion: https://postgr.es/m/CAKrAKeUEDeqquN9vwzNeG-CN8wuVsfRYbeOUV9qKO_RHok=j+g@mail.gmail.com

Branch
------
REL_14_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/1b3ed757145dd6fa29feb6a31084527a6d6a46e3

Modified Files
--------------
src/backend/replication/slot.c | 7 +++++++
src/backend/storage/ipc/procarray.c | 3 +++
2 files changed, 10 insertions(+)

Browse pgsql-committers by date

  From Date Subject
Next Message Amit Kapila 2022-11-22 10:12:32 pgsql: Improve comments atop pg_get_replication_slots.
Previous Message Andres Freund 2022-11-22 04:40:09 pgsql: Add wait event for pg_usleep() in perform_spin_delay()