Hi Bertrand, I read v2 and have a question about the window the new ordering opens between two invalidators.
As I understand it, in v2 the first invalidator acquires the slot, writes the state file with the invalidation, and only after the fsync sets data.invalidated in shared memory and releases the slot. While the write is in progress the slot looks valid to everyone else, with the invalidator's PID as active_pid. If a second invalidator reaches the same slot in that window (say a restartpoint enforcing max_slot_wal_keep_size while startup is replaying a wal_level change, or the other way round), it seems it would take the "slot is in use" path, so startup might send a recovery conflict to active_pid, or another process a SIGTERM. What do you think? -- JoongHyuk Shin
