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
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 |