Attached patch is a rough patch which supports multi sync replication by another approach I sent before.
The new GUC parameters are: * synchronous_standby_num, which specifies the number of standby servers using sync rep. (default is 0) * synchronous_replication_method, which specifies replication method; priority or quorum. (default is priority)
The behaviour of 'priority' and 'quorum' are same as what we've been discussing. But I write overview of these here again here.
[Priority Method] The standby server has each different priority, and the active standby servers having the top N priroity are become sync standby server. If synchronous_standby_names = '*', the all active standby server would be sync standby server. If you want to set up standby like 9.5 or before, you can set synchronous_standby_num = 1.
I used the following setting with 2 servers A and D connected:
synchronous_standby_names = 'A,B,C,D'
synchronous_standby_num = 2
synchronous_replication_method = 'priority'
Though s_r_m = 'quorum' worked fine, changing it to 'priority' caused segmentation fault.