Dear Vitaly, > I propose to apply this patch and then to think how to resolve this race > condition, which seems to take place in 18 and master as well.
No, I think this invalidation can't happen in PG18/HEAD. This is because in CheckpointGuts()->CheckPointReplicationSlots()-> ReplicationSlotsComputeRequiredLSN(), slots are examined one by one to determine whether their restart_lsn has advanced since the last check. If any slot has advanced, protection is applied starting from the oldest restart_lsn. Crucially, this check is performed before WAL removal. The function call was introduced in commit ca307d5cec. Further analysis shows that it is also safe if a slot is being created and WAL advances after CheckpointGuts() but before the removal segments are determined. In this case the restart_lsn points the CHECKPOINT_REDO generated by the current CHECKPOINT. This and later records won't be discarded. Best regards, Hayato Kuroda FUJITSU LIMITED