Re: Support for N synchronous standby servers - take 2
От | Masahiko Sawada |
---|---|
Тема | Re: Support for N synchronous standby servers - take 2 |
Дата | |
Msg-id | CAD21AoDhLN4zK4MZeE3Vx7g=qO0cyqHHn6bRMbYoC+ANf-=9VA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Support for N synchronous standby servers - take 2 (Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>) |
Список | pgsql-hackers |
On Tue, Apr 5, 2016 at 7:23 PM, Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp> wrote: > At Mon, 4 Apr 2016 22:00:24 +0900, Masahiko Sawada <sawada.mshk@gmail.com> wrote in <CAD21AoDoq1ubY4KkKhrA9jzaVXekwAT7gV5pQJbS+wj98b9-3A@mail.gmail.com> >> > For this case, the tree members of SyncRepConfig are '2[Sby1,', >> > 'Sby2', "Sby3]'. This syntax is valid for the current >> > specification but will surely get different meaning by the future >> > changes. We should refuse this known-to-be-wrong-in-future syntax >> > from now. >> >> I couldn't get your point but why will the above syntax meaning be >> different from current meaning by future change? >> I thought that another method uses another kind of parentheses. > > If the 'another kind of parehtheses' is a pair of brackets, an > application_name 'tokyo[A]', for example, is currently allowed to > occur unquoted in the list but will become disallowed by the > syntax change. > > Thank you for explaining. I understood but since the future syntax is yet to be reached consensus, I thought that it would be difficult to refuse particular kind of parentheses for now. > > list_member_int() performs the loop internally. So I'm not sure how much > > adding extra list_member_int() here can optimize this processing. > > Another idea is to make SyncRepGetSyncStandby() check whether I'm sync > > standby or not. In this idea, without adding extra loop, we can exit earilier > > in the case where I'm not a sync standby. Does this make sense? > The list_member_int() is also performed in the "(snip)" part. So > SyncRepGetSyncStandbys() returning am_sync seems making sense. > > sync_standbys = SyncRepGetSyncStandbys(am_sync); > > /* > * Quick exit if I am not synchronous or there's not > * enough synchronous standbys > * / > if (!*am_sync || list_length(sync_standbys) < SyncRepConfig->num_sync) > { > list_free(sync_standbys); > return false; I meant that it can skip to acquire spin lock at least, so it will optimise that logic. But anyway I agree with making SyncRepGetSyncStandbys returns am_sync variable. -- Regards, -- Masahiko Sawada
В списке pgsql-hackers по дате отправления: