Re: [HACKERS] Interval for launching the table sync worker
От | Kyotaro HORIGUCHI |
---|---|
Тема | Re: [HACKERS] Interval for launching the table sync worker |
Дата | |
Msg-id | 20170425.182712.165360348.horiguchi.kyotaro@lab.ntt.co.jp обсуждение исходный текст |
Ответ на | Re: [HACKERS] Interval for launching the table sync worker (Masahiko Sawada <sawada.mshk@gmail.com>) |
Ответы |
Re: [HACKERS] Interval for launching the table sync worker
|
Список | pgsql-hackers |
Hello, At Tue, 25 Apr 2017 00:52:09 +0900, Masahiko Sawada <sawada.mshk@gmail.com> wrote in <CAD21AoCHPfBqKRiFSMmZSXM5qbB5rD_HZMrniL4E19T2r8WpkA@mail.gmail.com> > + elog(ERROR, "this hash hashtable \"%s\" is not frozen", > + hashp->tabname); > > Maybe the error message should be "this hashtable \"%s\" is not frozen". Both of "hashtable" and "hash table" appear there but hash_freeze uses the former. I followed that. > s/leavs/leaves/ > s/freezed/frozen/ > s/rurn/run/ Thanks! But the "rurn" was a typo of "turn". > On Tue, Apr 25, 2017 at 1:42 AM, Petr Jelinek > <petr.jelinek@2ndquadrant.com> wrote: > > On 24/04/17 17:52, Masahiko Sawada wrote: > >> On Mon, Apr 24, 2017 at 4:41 PM, Kyotaro HORIGUCHI > >> <horiguchi.kyotaro@lab.ntt.co.jp> wrote: > >> + /* > >> + * Remove entries no longer necessary. The flag signals nothing if > >> + * subrel_local_state is not updated above. We can remove entries in > >> + * frozen hash safely. > >> + */ > >> + if (local_state_updated && !wstate->alive) > >> + { > >> + hash_search(subrel_local_state, &wstate->rs.relid, > >> + HASH_REMOVE, NULL); > >> + continue; > >> + } > >> > >> IIUC since the apply worker can change the status from > >> SUBREL_STATE_SYNCWAIT to SUBREL_STATE_READY in a hash_seq_search loop > >> the table sync worker which is changed to SUBREL_STATE_READY by the > >> apply worker before updating the subrel_local_state could be remained > >> in the hash table. Every time after pg_subscription_rel is updated, the hash entries are marked alive only when the corresponding not-ready relations found in pg_subscription_rel. If any live entries remains, nrels becomes a positive number and dead entries are removed in the loop just after. If no entry survives, the hash will be immediately destroyed. Some dead entries can survive under ceratin condition but the one of the aboves will occur shortly. If it is hard to understand, I might should put some additional comments. > >> I think that we should scan pg_subscription_rel by > >> using only a condition "subid". > >> > > > > I don't follow this. > > > > Hmm, I'd misunderstood something. It should work fine. Sorry for the noise. Anyway, the typo-fixed version is attached. regards, -- Kyotaro Horiguchi NTT Open Source Software Center
В списке pgsql-hackers по дате отправления: