Re: standby recovery fails (tablespace related) (tentative patch and discussion)

Anastasia Lubennikova <a.lubennikova@postgrespro.ru>

From: Anastasia Lubennikova <a.lubennikova@postgrespro.ru>
To: Asim R P <apraveen@pivotal.io>, Paul Guo <pguo@pivotal.io>, Alexandra Wang <leiwang@pivotal.io>
Cc: Thomas Munro <thomas.munro@gmail.com>, Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>, PostgreSQL mailing lists <pgsql-hackers@postgresql.org>
Date: 2019-12-26T14:45:19Z
Lists: pgsql-hackers

Attachments

20.09.2019 15:23, Asim R P wrote:
> On Thu, Sep 19, 2019 at 5:29 PM Asim R P <apraveen@pivotal.io 
> <mailto:apraveen@pivotal.io>> wrote:
> >
> > In order to fix the test failures, we need to distinguish between a 
> missing database directory and a missing tablespace directory.  And 
> also add logic to forget missing directories during tablespace drop.  
> I am working on it.
>
> Please find attached a solution that builds on what Paul has propose.  
> A hash table, similar to the invalid page hash table is used to track 
> missing directory references.  A missing directory may be a tablespace 
> or a database, based on whether the tablespace is found missing or the 
> source database is found missing.  The crash recovery succeeds if the 
> hash table is empty at the end.
>
The v6-0003 patch had merge conflicts due to the recent 
'xl_dbase_drop_rec' change, so I rebased it.
See v7-0003 in attachment. Changes are pretty straightforward, though It 
would be great, if you could check them once more.

Newly introduced test 4 in t/011_crash_recovery.pl fails without the 
patch and passes with it.
It seems to me that everything is fine, so I mark it "Ready For Committer"

-- 
Anastasia Lubennikova
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

Commits

  1. Improve recently-added test reliability

  2. Fix new recovery test for log_error_verbosity=verbose case

  3. Fix test instability

  4. Fix replay of create database records on standby

  5. Allow "in place" tablespaces.

  6. Fix get_dirent_type() for Windows junction points.

  7. Revert "Fix replay of create database records on standby"

  8. Add end-to-end testing of pg_basebackup's tar-format output.

  9. Make DROP DATABASE command generate less WAL records.

  10. Consolidate methods for translating a Perl path to a Windows path.