Refresh apply delay on reload of recovery_min_apply_delay at recovery
authorMichael Paquier <michael@paquier.xyz>
Mon, 16 Aug 2021 03:10:22 +0000 (12:10 +0900)
committerMichael Paquier <michael@paquier.xyz>
Mon, 16 Aug 2021 03:10:22 +0000 (12:10 +0900)
commite4ba1005c0f7a95e3252f38aee02426117b8e12b
tree9e4cf3375f5cf2e1c5db80ff39c2dd5555a01a91
parent0a208ed63ffe50a8d9d7c0b33996ec01cc4fdef6
Refresh apply delay on reload of recovery_min_apply_delay at recovery

This commit ensures that the wait interval in the replay delay loop
waiting for an amount of time defined by recovery_min_apply_delay is
correctly handled on reload, recalculating the delay if this GUC value
is updated, based on the timestamp of the commit record being replayed.

The previous behavior would be problematic for example with replay
still waiting even if the delay got reduced or just cancelled.  If the
apply delay was increased to a larger value, the wait would have just
respected the old value set, finishing earlier.

Author: Soumyadeep Chakraborty, Ashwin Agrawal
Reviewed-by: Kyotaro Horiguchi, Michael Paquier
Discussion: https://postgr.es/m/CAE-ML+93zfr-HLN8OuxF0BjpWJ17O5dv1eMvSE5jsj9jpnAXZA@mail.gmail.com
Backpatch-through: 9.6
src/backend/access/transam/xlog.c