Re: Corner-case bug in pg_rewind

Heikki Linnakangas <hlinnaka@iki.fi>

From: Heikki Linnakangas <hlinnaka@iki.fi>
To: Pavel Borisov <pashkin.elfe@gmail.com>, Anastasia Lubennikova <a.lubennikova@postgrespro.ru>
Cc: Ian Lawrence Barwick <barwick@gmail.com>, Ian Barwick <ian.barwick@2ndquadrant.com>, Pgsql Hackers <pgsql-hackers@postgresql.org>
Date: 2020-12-02T11:13:38Z
Lists: pgsql-hackers

Attachments

On 01/12/2020 16:52, Pavel Borisov wrote:
>     Status update for a commitfest entry.
> 
>     The patch is Waiting on Author for some time. As this is a bug fix,
>     I am
>     moving it to the next CF.
>     Ian, are you planning to continue working on it?
> 
> As a reviewer, I consider the patch useful and good overall. The 
> comments I left were purely cosmetic. It's a pity to me that this bugfix 
> delayed for such a small reason and outdated, therefore. It would be 
> nice to complete this fix on the next CF.

Yeah, we really should fix this..

On 16/11/2020 04:49, Ian Lawrence Barwick wrote:
>> Also, I think Heikki's notion could be fulfilled.
> 
> I spent a bit of time looking at that suggestion but couldn't actually
> verify it was an issue which needed fixing.

Attached are two patches. The first patch is your original patch, 
unmodified (except for a cosmetic rename of the test file). The second 
patch builds on that, demonstrating and fixing the issue I mentioned. It 
took me a while to create a repro for it, it's easily masked by 
incidental full-page writes or because rows created by XIDs that are not 
marked as committed on the other timeline are invisible, but succeeded 
at last.

- Heikki

Commits

  1. Fix more race conditions in the newly-added pg_rewind test.

  2. Fix race conditions in newly-added test.

  3. Fix pg_rewind bugs when rewinding a standby server.

  4. Allow pg_rewind to use a standby server as the source system.

  5. Support clean switchover.