Allow synced slots to have their inactive_since.
authorAmit Kapila <[email protected]>
Fri, 5 Apr 2024 04:18:49 +0000 (09:48 +0530)
committerAmit Kapila <[email protected]>
Fri, 5 Apr 2024 04:18:49 +0000 (09:48 +0530)
commit6f132ed693b6a0be0997f092c42abf14878362ac
treea497a168c1450efbd2dc4e6ac17b5cf9d4039fa9
parentf98dbdeb51d1175c07258cd2bd4b56f560dfc3cf
Allow synced slots to have their inactive_since.

This commit does two things:
1) Maintains inactive_since for sync slots whenever the slot is released
just like any other regular slot.

2) Ensures the value is set to the current timestamp during the promotion
of standby to help correctly interpret the time after promotion. We don't
want the slots to appear inactive for a long time after promotion if they
haven't been synchronized recently. This would also avoid the invalidation
of such slots immediately after promotion if tomorrow we have a feature
that invalidates slots based on their inactivity time. Whoever acquires
the slot i.e. makes the slot active will reset it to NULL.

Author: Bharath Rupireddy
Reviewed-by: Bertrand Drouvot, Amit Kapila, Shveta Malik, Masahiko Sawada
Discussion: https://postgr.es/m/CAA4eK1KrPGwfZV9LYGidjxHeW+rxJ=E2ThjXvwRGLO=iLNuo=Q@mail.gmail.com
Discussion: https://postgr.es/m/CALj2ACW4aUe-_uFQOjdWCEN-xXoLGhmvRFnL8SNw_TZ5nJe+aw@mail.gmail.com
Discussion: https://postgr.es/m/CA+Tgmob_Ta-t2ty8QrKHBGnNLrf4ZYcwhGHGFsuUoFrAEDw4sA@mail.gmail.com
doc/src/sgml/system-views.sgml
src/backend/replication/logical/slotsync.c
src/backend/replication/slot.c
src/test/perl/PostgreSQL/Test/Cluster.pm
src/test/recovery/t/019_replslot_limit.pl
src/test/recovery/t/040_standby_failover_slots_sync.pl