Re: standby recovery fails (tablespace related) (tentative patch anddiscussion) - Mailing list pgsql-hackers

From Anastasia Lubennikova
Subject Re: standby recovery fails (tablespace related) (tentative patch anddiscussion)
Date
Msg-id 34500455-1092-ecbf-ae07-cefafdaf8985@postgrespro.ru
Whole thread Raw
In response to Re: standby recovery fails (tablespace related) (tentative patch and discussion)  (Asim R P <apraveen@pivotal.io>)
Responses Re: standby recovery fails (tablespace related) (tentative patch anddiscussion)
List pgsql-hackers
20.09.2019 15:23, Asim R P wrote:
On Thu, Sep 19, 2019 at 5:29 PM Asim R P <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
Attachment

pgsql-hackers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: Assert failure due to "drop schema pg_temp_3 cascade" fortemporary tables and \d+ is not showing any info after drooping temp tableschema
Next
From: Mahendra Singh
Date:
Subject: Re: Assert failure due to "drop schema pg_temp_3 cascade" fortemporary tables and \d+ is not showing any info after drooping temp table schema