Adjust max_slot_wal_keep_size behavior per review
authorAlvaro Herrera
Wed, 24 Jun 2020 18:23:39 +0000 (14:23 -0400)
committerAlvaro Herrera
Wed, 24 Jun 2020 18:23:39 +0000 (14:23 -0400)
commit6f7a862bed3a49283c74c0adf207172002e3e03c
tree6e9cb5a69540d7118d1ed30c4edccef90766d118
parent12e52ba5a76e56aacdfbbb269e6b45c53d80c477
Adjust max_slot_wal_keep_size behavior per review

In pg_replication_slot, change output from normal/reserved/lost to
reserved/extended/unreserved/ lost, which better expresses the possible
states particularly near the time where segments are no longer safe but
checkpoint has not run yet.

Under the new definition, reserved means the slot is consuming WAL
that's still under the normal WAL size constraints; extended means it's
consuming WAL that's being protected by wal_keep_segments or the slot
itself, whose size is below max_slot_wal_keep_size; unreserved means the
WAL is no longer safe, but checkpoint has not yet removed those files.
Such as slot is in imminent danger, but can still continue for a little
while and may catch up to the reserved WAL space.

Also, there were some bugs in the calculations used to report the
status; fixed those.

Backpatch to 13.

Reported-by: Fujii Masao
Author: Kyotaro Horiguchi 
Reviewed-by: Fujii Masao
Reviewed-by: Álvaro Herrera
Discussion: https://postgr.es/m/20200616.120236.1809496990963386593[email protected]
doc/src/sgml/catalogs.sgml
src/backend/access/transam/xlog.c
src/backend/replication/slotfuncs.c
src/include/access/xlog.h
src/test/recovery/t/019_replslot_limit.pl