Re: Checkpoint replication slots later - Mailing list pgsql-hackers

From Hüseyin Demir
Subject Re: Checkpoint replication slots later
Date
Msg-id CAB5wL7Yi_WdVjFAbHkshk1+rzEe0BQpjFA=+BY00n3egRrJ7Kw@mail.gmail.com
Whole thread
In response to Re: Checkpoint replication slots later  (Fujii Masao <masao.fujii@gmail.com>)
Responses Re: Checkpoint replication slots later
List pgsql-hackers
Hi,


> > Hi Ant,
> >
> > Good idea.
>
> +1.
>
> CheckPointSnapBuild() and CheckPointLogicalRewriteHeap() call
> ReplicationSlotsComputeLogicalRestartLSN(), which seems to use
> last_saved_restart_lsn for persistent logical slots. Since
> last_saved_restart_lsn is updated by CheckPointReplicationSlots(),
> if those functions run before it, their cleanup decisions are still
> based on the restart_lsn saved at the previous checkpoint.
>
> So, isn't it better to move them after CheckPointReplicationSlots()
> as well, so that logical snapshot and rewrite mapping cleanup can use
> the newly saved restart_lsn?
>
> Of course, we'd first need to confirm that doing so is safe, though.

I revisited the CheckPointSnapBuild() and
CheckPointLogicalRewriteHeap(). Both functions work idempotently and
are safe to move after CheckPointReplicationSlots(). They benefit from
the updated last_saved_restart_lsn computed in the current checkpoint
cycle, enabling more accurate cleanup decisions.

I ran regression testing comparing the baseline (master) version with
the patched version:

- Checkpoint duration: No change.
- WAL retention: More accurate, because it uses the current
replication slot state.
- Regressions: None detected.
- Dependencies: No new dependencies introduced.

Please see the v2 as attached but we can also commit the v1  since the
only difference is the order of CheckPointSnapBuild and
CheckPointLogicalRewriteHeap working idempotently.

Regards,
Demir.

Attachment

pgsql-hackers by date:

Previous
From: Tomas Vondra
Date:
Subject: Re: allow spread checkpoints when changing checksums online
Next
From: "Greg Burd"
Date:
Subject: Re: Tepid: selective index updates for heap relations