Track last_inactive_time in pg_replication_slots.
Amit Kapila <akapila@postgresql.org>
Track last_inactive_time in pg_replication_slots. This commit adds a new property called last_inactive_time for slots. It is set to 0 whenever a slot is made active/acquired and set to the current timestamp whenever the slot is inactive/released or restored from the disk. Note that we don't set the last_inactive_time for the slots currently being synced from the primary to the standby because such slots are typically inactive as decoding is not allowed on those. The 'last_inactive_time' will be useful on production servers to debug and analyze inactive replication slots. It will also help to know the lifetime of a replication slot - one can know how long a streaming standby, logical subscriber, or replication slot consumer is down. The 'last_inactive_time' will also be useful to implement inactive timeout-based replication slot invalidation in a future commit. Author: Bharath Rupireddy Reviewed-by: Bertrand Drouvot, Amit Kapila, Shveta Malik Discussion: https://www.postgresql.org/message-id/CALj2ACW4aUe-_uFQOjdWCEN-xXoLGhmvRFnL8SNw_TZ5nJe+aw@mail.gmail.com
Files
| Path | Change | +/− |
|---|---|---|
| doc/src/sgml/system-views.sgml | modified | +10 −0 |
| src/backend/catalog/system_views.sql | modified | +1 −0 |
| src/backend/replication/slot.c | modified | +35 −0 |
| src/backend/replication/slotfuncs.c | modified | +6 −1 |
| src/include/catalog/catversion.h | modified | +1 −1 |
| src/include/catalog/pg_proc.dat | modified | +3 −3 |
| src/include/replication/slot.h | modified | +3 −0 |
| src/test/recovery/t/019_replslot_limit.pl | modified | +152 −0 |
| src/test/regress/expected/rules.out | modified | +2 −1 |
Documentation touched
Discussion
- Introduce XID age and inactive timeout based replication slot invalidation 414 messages · 2024-01-11 → 2025-02-20