I suggest adding a new state to pg_stat_activity.state for backends that are
waiting for their synchronous commit to be flushed on the remote host.
Excellent idea. Anything that improves management and visibility into what the system is doing like this is really valuable.
I notice that you don't set the 'waiting' flag. 'waiting' is presently documented as:
<entry>True if this backend is currently waiting on a lock</entry>
... but I'm inclined to just widen its definition and set it here, since we most certainly are waiting, and the column isn't named 'waiting_on_a_lock'. It shouldn't upset various canned lock monitoring queries people have since they generally do an inner join on pg_locks anyway.
There are no test changes in this patch, but that's reasonable because we don't currently have a way to automate tests of sync rep.
I've attached a patch with minor wording/formatting changes, but I think I'd like to change 'waiting' to true as well. Opinions?