Re: 9.2.3 crashes during archive recovery - Mailing list pgsql-hackers

From Michael Paquier
Subject Re: 9.2.3 crashes during archive recovery
Date
Msg-id CAB7nPqSRRXgT-CH=A+vh8WXwXEWP=fYTb0YZ9N6KYwY75yqbNQ@mail.gmail.com
Whole thread Raw
In response to Re: 9.2.3 crashes during archive recovery  (Heikki Linnakangas <hlinnakangas@vmware.com>)
Responses Re: 9.2.3 crashes during archive recovery
List pgsql-hackers


On Thu, Feb 21, 2013 at 11:09 PM, Heikki Linnakangas <hlinnakangas@vmware.com> wrote:
On 15.02.2013 15:49, Heikki Linnakangas wrote:
Attached is a patch for git master. The basic idea is to split
InArchiveRecovery into two variables, InArchiveRecovery and
ArchiveRecoveryRequested. ArchiveRecoveryRequested is set when
recovery.conf exists. But if we don't know how far we need to recover,
we first perform crash recovery with InArchiveRecovery=false. When we
reach the end of WAL in pg_xlog, InArchiveRecovery is set, and we
continue with normal archive recovery.

New version of this attached, with a few bugs fixed.

I'm thinking that this should be back-patched to 9.2, but not to earlier branches. Before 9.2, we don't PANIC at a reference to a non-existent page until end of recovery, even if we've already reached consistency. The same basic issue still exists in earlier versions, though: if you have hot_standby=on, the system will open for read-only queries too early, before the database is consistent. But this patch is invasive enough that I'm weary of back-patching it further, when the worst that can happen is that there's a small window right after startup when you can see an inconsistent database in hot standby mode. Maybe after we get some more testing of this in 9.2 and master. Opinions on that?
People have not yet complained about this problem with versions prior to 9.1. Is it worth backpatching in this case?
--
Michael

pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: Materialized views WIP patch
Next
From: Michael Paquier
Date:
Subject: use_remote_explain missing in docs of postgres_fdw