Re: Quorum commit for multiple synchronous replication.
От | Michael Paquier |
---|---|
Тема | Re: Quorum commit for multiple synchronous replication. |
Дата | |
Msg-id | CAB7nPqR6-ytYMrrkMGbAz1R7pqFQu1pGJX166uBZqAfZapisXg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Quorum commit for multiple synchronous replication. (Masahiko Sawada <sawada.mshk@gmail.com>) |
Ответы |
Re: Quorum commit for multiple synchronous replication.
|
Список | pgsql-hackers |
On Tue, Nov 15, 2016 at 7:08 PM, Masahiko Sawada <sawada.mshk@gmail.com> wrote: > Attached latest version patch incorporated review comments. After more > thought, I agree and changed the value of standby priority in quorum > method so that it's not set 1 forcibly. The all standby priorities are > 1 If s_s_names = 'ANY(*)'. > Please review this patch. Sorry for my late reply. Here is my final lookup. <synopsis> -<replaceable class="parameter">num_sync</replaceable> ( <replaceable class="parameter">standby_name</replaceable> [, ...] ) +[ANY] <replaceable class="parameter">num_sync</replaceable> ( <replaceable class="parameter">standby_name</replaceable> [, ...] ) +FIRST <replaceable class="parameter">num_sync</replaceable> ( <replaceable class="parameter">standby_name</replaceable> [, ...] ) <replaceable class="parameter">standby_name</replaceable> [, ... This can just be replaced with [ ANY | FIRST ]. There is no need for braces as the keyword is not mandatory. + is the name of a standby server. + <literal>FIRST</> and <literal>ANY</> specify the method used by + the master to control the standby servres. </para> s/servres/servers/. if (priority == 0) values[7] = CStringGetTextDatum("async"); else if (list_member_int(sync_standbys, i)) - values[7] = CStringGetTextDatum("sync"); + values[7] = SyncRepConfig->sync_method == SYNC_REP_PRIORITY ? + CStringGetTextDatum("sync") : CStringGetTextDatum("quorum"); else values[7] = CStringGetTextDatum("potential"); This can be simplified a bit as "quorum" is the state value for all standbys with a non-zero priority when the method is set to SYNC_REP_QUORUM: if (priority == 0) values[7] = CStringGetTextDatum("async"); + else if (SyncRepConfig->sync_method == SYNC_REP_QUORUM) + values[7] = CStringGetTextDatum("quorum"); else if (list_member_int(sync_standbys, i)) values[7] = CStringGetTextDatum("sync"); else SyncRepConfig data is made external to syncrep.c with this patch as walsender.c needs to look at the sync method in place, no complain about that after considering if there could be a more elegant way to do things without this change. While reviewing the patch, I have found a couple of incorrectly shaped sentences, both in the docs and some comments. Attached is a new version with this word-smithing. The patch is now switched as ready for committer. -- Michael
Вложения
В списке pgsql-hackers по дате отправления: