Re: USE_BARRIER_SMGRRELEASE on Linux?

From: Nathan Bossart <nathandbossart(at)gmail(dot)com>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: USE_BARRIER_SMGRRELEASE on Linux?
Date: 2022-02-16 16:44:42
Message-ID: 20220216164442.GA2935315@nathanxps13
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Feb 15, 2022 at 10:57:32PM -0800, Nathan Bossart wrote:
> On Tue, Feb 15, 2022 at 10:14:04PM -0800, Nathan Bossart wrote:
>> It looks like register_unlink_segment() is called prior to the checkpoint,
>> but the checkpointer is not calling RememberSyncRequest() until after
>> SyncPreCheckpoint(). This means that the requests are registered with the
>> next checkpoint cycle count, so they aren't processed until the next
>> checkpoint.
>
> Calling AbsorbSyncRequests() before advancing the checkpoint cycle counter
> seems to fix the issue. However, this requires moving SyncPreCheckpoint()
> out of the critical section in CreateCheckPoint(). Patch attached.

An alternative fix might be to call AbsorbSyncRequests() after increasing
the ckpt_started counter in CheckpointerMain(). AFAICT there is a window
just before checkpointing where new requests are registered for the
checkpoint following the one about to begin.

--
Nathan Bossart
Amazon Web Services: https://aws.amazon.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Masahiko Sawada 2022-02-16 16:47:31 Re: do only critical work during single-user vacuum?
Previous Message Robert Haas 2022-02-16 16:16:25 Re: refactoring basebackup.c