From: Fujii Masao Date: Tue, 25 Apr 2017 16:07:13 +0000 (+0900) Subject: Set the priorities of all quorum synchronous standbys to 1. X-Git-Tag: REL_10_BETA1~174 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=346199dcab4cfb2c023373fb3d859583b59810d7;p=postgresql Set the priorities of all quorum synchronous standbys to 1. In quorum-based synchronous replication, all the standbys listed in synchronous_standby_names equally have chances to be chosen as synchronous standbys. So they should have the same priority. However, previously, quorum standbys whose names appear earlier in the list were given higher priority values though the difference of those priority values didn't affect the selection of synchronous standbys. Users could see those "meaningless" priority values in pg_stat_replication and this was confusing. This commit gives all the quorum synchronous standbys the same highest priority, i.e., 1, in order to remove such confusion. Author: Fujii Masao Reviewed-by: Masahiko Sawada, Kyotaro Horiguchi Discussion: http://postgr.es/m/CAHGQGwEKOw=SmPLxJzkBsH6wwDBgOnVz46QjHbtsiZ-d-2RGUg@mail.gmail.com --- diff --git a/src/backend/replication/syncrep.c b/src/backend/replication/syncrep.c index 25c67aaac7..554f783209 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 e11b4289d5..e56bbb9d86 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)');