Don't retreat slot's confirmed_flush LSN.
authorAmit Kapila <[email protected]>
Mon, 19 May 2025 06:43:06 +0000 (12:13 +0530)
committerAmit Kapila <[email protected]>
Mon, 19 May 2025 06:43:06 +0000 (12:13 +0530)
commitad5eaf390c58294e2e4c1509aa87bf13261a5d15
tree875ea9401d31331db09e9c89ab1ec43a8571fbc1
parentf8db5c7a3f91aa07d53592f6e6e6378e26c7b55d
Don't retreat slot's confirmed_flush LSN.

Prevent moving the confirmed_flush backwards, as this could lead to data
duplication issues caused by replicating already replicated changes.

This can happen when a client acknowledges an LSN it doesn't have to do
anything for, and thus didn't store persistently. After a restart, the
client can send the prior LSN that it stored persistently as an
acknowledgement, but we need to ignore such an LSN to avoid retreating
confirm_flush LSN.

Diagnosed-by: Zhijie Hou <[email protected]>
Author: shveta malik <[email protected]>
Reviewed-by: Amit Kapila <[email protected]>
Reviewed-by: Dilip Kumar <[email protected]>
Tested-by: Nisha Moond <[email protected]>
Backpatch-through: 13
Discussion: https://postgr.es/m/CAJpy0uDZ29P=BYB1JDWMCh-6wXaNqMwG1u1mB4=10Ly0x7HhwQ@mail.gmail.com
Discussion: https://postgr.es/m/OS0PR01MB57164AB5716AF2E477D53F6F9489A@OS0PR01MB5716.jpnprd01.prod.outlook.com
src/backend/replication/logical/logical.c