Re: pg_rewind fails if there is a read only file.

From: Andrew Dunstan <andrew(at)dunslane(dot)net>
To: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>, Michael Paquier <michael(at)paquier(dot)xyz>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Paul Guo <paulguo(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: pg_rewind fails if there is a read only file.
Date: 2021-05-26 14:32:09
Message-ID: 661e7a87-f81c-1fbd-2294-f34387ebf804@dunslane.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


On 5/26/21 2:43 AM, Laurenz Albe wrote:
> On Wed, 2021-05-26 at 08:57 +0900, Michael Paquier wrote:
>> On Tue, May 25, 2021 at 03:17:37PM -0400, Andrew Dunstan wrote:
>>> If we do decide to do something the question arises what should it do?
>>> If we're to allow for it I'm wondering if the best thing would be simply
>>> to ignore such a file.
>> Enforcing assumptions that any file could be ready-only is a very bad
>> idea, as that could lead to weird behaviors if a FS is turned as
>> becoming read-only suddenly while doing a rewind. Another idea that
>> has popped out across the years was to add an option to pg_rewind so
>> as users could filter files manually. That could be easily dangerous
>> though in the wrong hands, as one could think that it is a good idea
>> to skip a control file, for example.
>>
>> The thing is that here we actually know the set of files we'd like to
>> ignore most of the time, and we still want to have some automated
>> control what gets filtered. So here is a new idea: we build a list of
>> files based on a set of GUC parameters using postgres -C on the target
>> data folder, and assume that these are safe enough to be skipped all
>> the time, if these are in the data folder.
> That sounds complicated, but should work.
> There should be a code comment somewhere that warns people not to forget
> to look at that when they add a new GUC.
>
> I can think of two alternatives to handle this:
>
> - Skip files that cannot be opened for writing and issue a warning.
> That is simple, but coarse.
> A slightly more sophisticated version would first check if files
> are the same on both machines and skip the warning for those.
>
> - Paul's idea to try and change the mode on the read-only file
> and reset it to the original state after pg_rewind is done.
>

How about we only skip (with a warning) read-only files if they are in
the data root, not a subdirectory? That would save us from silently
ignoring read-only filesystems and not involve using a GUC.

cheers

andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Ibrar Ahmed 2021-05-26 14:52:17 Re: Next Commitfest Manager.
Previous Message Bharath Rupireddy 2021-05-26 14:25:39 Re: Logical Replication - improve error message while adding tables to the publication in check_publication_add_relation