]> granicus.if.org Git - postgresql/commitdiff
Set the priorities of all quorum synchronous standbys to 1.
authorFujii Masao <fujii@postgresql.org>
Tue, 25 Apr 2017 16:07:13 +0000 (01:07 +0900)
committerFujii Masao <fujii@postgresql.org>
Tue, 25 Apr 2017 16:07:13 +0000 (01:07 +0900)
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

src/backend/replication/syncrep.c
src/test/recovery/t/007_sync_rep.pl

index 25c67aaac72b50f931e547790d7df26694c8c218..554f783209635167b1089c3b73fda6f23a0400bb 100644 (file)
@@ -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;
 }
 
 /*
index e11b4289d5289a76c45d05efae337a994d7bc455..e56bbb9d86f6288db887d82a90257189dd61fa45 100644 (file)
@@ -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)');