Dear Hou,
Thanks for updating the patch. Few comments:
01. worker.c
```
+/*
+ * The minimum (100ms) and maximum (3 minutes) intervals for advancing
+ * non-removable transaction IDs.
+ */
+#define MIN_XID_ADVANCEMENT_INTERVAL 100
+#define MAX_XID_ADVANCEMENT_INTERVAL 180000L
```
Since the max_interval is an integer variable, it can be s/180000L/180000/.
02. ErrorOnReservedSlotName()
Currently the function is callsed from three points - create_physical_replication_slot(),
create_logical_replication_slot() and CreateReplicationSlot().
Can we move them to the ReplicationSlotCreate(), or combine into ReplicationSlotValidateName()?
03. advance_conflict_slot_xmin()
```
Assert(TransactionIdIsValid(MyReplicationSlot->data.xmin));
```
Assuming the case that the launcher crashed just after ReplicationSlotCreate(CONFLICT_DETECTION_SLOT).
After the restart, the slot can be acquired since SearchNamedReplicationSlot(CONFLICT_DETECTION_SLOT)
is true, but the process would fail the assert because data.xmin is still invalid.
I think we should re-create the slot when the xmin is invalid. Thought?
04. documentation
Should we update "Configuration Settings" section in logical-replication.sgml
because an additional slot is required?
05. check_remote_recovery()
Can we add a test case related with this?
Best regards,
Hayato Kuroda
FUJITSU LIMITED