diff --git a/src/backend/replication/syncrep.c b/src/backend/replication/syncrep.c index 25c67aaac72b50f931e547790d7df26694c8c218..554f783209635167b1089c3b73fda6f23a0400bb 100644 --- a/src/backend/replication/syncrep.c +++ b/src/backend/replication/syncrep.c @@ -951,7 +951,14 @@ SyncRepGetStandbyPriority(void) standby_name += strlen(standby_name) + 1; } - return (found ? priority : 0); + if (!found) + return 0; + + /* + * In quorum-based sync replication, all the standbys in the list + * have the same priority, one. + */ + return (SyncRepConfig->syncrep_method == SYNC_REP_PRIORITY) ? priority : 1; } /* diff --git a/src/test/recovery/t/007_sync_rep.pl b/src/test/recovery/t/007_sync_rep.pl index e11b4289d5289a76c45d05efae337a994d7bc455..e56bbb9d86f6288db887d82a90257189dd61fa45 100644 --- a/src/test/recovery/t/007_sync_rep.pl +++ b/src/test/recovery/t/007_sync_rep.pl @@ -186,7 +186,7 @@ standby4|0|async), # for sync standbys in a quorum-based sync replication. test_sync_state( $node_master, qq(standby1|1|quorum -standby2|2|quorum +standby2|1|quorum standby4|0|async), '2 quorum and 1 async', 'ANY 2(standby1, standby2)');