Re: sync request forward function ForwardSyncRequest() might hang for some time in a corner case?

From: Julien Rouhaud <rjuju123(at)gmail(dot)com>
To: Paul Guo <paulguo(at)gmail(dot)com>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: sync request forward function ForwardSyncRequest() might hang for some time in a corner case?
Date: 2021-05-27 14:23:42
Message-ID: CAOBaU_Y9miziVTYJJaBdYw=8sGN364psA-HS6NFuPi=tUvkYKg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, May 27, 2021 at 10:05 PM Paul Guo <paulguo(at)gmail(dot)com> wrote:
>
> Also note that ForwardSyncRequest() does wake up the checkpointer if
> it thinks the requests in shared memory are "too full", but does not
> wake up when the request is actually full. This does not seem to be reasonable.
> See below code in ForwardSyncRequest
>
> /* If queue is more than half full, nudge the checkpointer to empty it */
> too_full = (CheckpointerShmem->num_requests >=
> CheckpointerShmem->max_requests / 2);
>
> /* ... but not till after we release the lock */
> if (too_full && ProcGlobal->checkpointerLatch)
> SetLatch(ProcGlobal->checkpointerLatch);

Ah indeed. Well it means that the checkpointer it woken up early
enough to avoid reaching that point. I'm not sure that it's actually
possible to reach a point where the list if full and the checkpointer
is sitting idle.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2021-05-27 14:25:17 Re: Move pg_attribute.attcompression to earlier in struct for reduced size?
Previous Message Paul Guo 2021-05-27 14:22:14 Re: sync request forward function ForwardSyncRequest() might hang for some time in a corner case?