Re: [HACKERS] Restricting maximum keep segments by repslots
От | Alvaro Herrera |
---|---|
Тема | Re: [HACKERS] Restricting maximum keep segments by repslots |
Дата | |
Msg-id | 20200428231410.GA9805@alvherre.pgsql обсуждение исходный текст |
Ответ на | Re: [HACKERS] Restricting maximum keep segments by repslots (Kyotaro Horiguchi <horikyota.ntt@gmail.com>) |
Ответы |
Re: [HACKERS] Restricting maximum keep segments by repslots
|
Список | pgsql-hackers |
On 2020-Apr-28, Kyotaro Horiguchi wrote: > > Anyway I think this patch should fix it also -- instead of adding a new > > flag, we just rely on the existing flags (since do_checkpoint must have > > been set correctly from the flags earlier in that block.) > > Since the added (!do_checkpoint) check is reached with > do_checkpoint=false at server start and at archive_timeout intervals, > the patch makes checkpointer run a busy-loop at that timings, and that > loop lasts until a checkpoint is actually executed. > > What we need to do here is not forgetting the fact that the latch has > been set even if the latch itself gets reset before reaching to > WaitLatch. After a few more false starts :-) I think one easy thing we can do without the additional boolean flag is to call SetLatch there in the main loop if we see that ckpt_flags is nonzero. (I had two issues with the boolean flag. One is that the comment in ReqCheckpointHandler needed an update to, essentially, say exactly the opposite of what it was saying; such a change was making me very uncomfortable. The other is that the place where the flag was reset in CheckpointerMain() was ... not really appropriate; or it could have been appropriate if the flag was called, say, "CheckpointerMainNoSleepOnce". Because "RequestPending" was the wrong name to use, because if the flag was for really request pending, then we should reset it inside the "if do_checkpoint" block .. but as I understand this would cause the busy-loop behavior you described.) > The attached patch on 019_replslot_limit.pl does the commands above > automatically. It sometimes succeed but fails in most cases, at least > for me. With the additional SetLatch, the test passes reproducibly for me. Before the patch, it failed ten out of ten times I ran it. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Вложения
В списке pgsql-hackers по дате отправления: