Re: [BUG] non archived WAL removed during production crash recovery

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: Kyotaro Horiguchi <horikyota(dot)ntt(at)gmail(dot)com>
Cc: jgdr(at)dalibo(dot)com, masao(dot)fujii(at)oss(dot)nttdata(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: [BUG] non archived WAL removed during production crash recovery
Date: 2020-04-21 04:57:39
Message-ID: 20200421045739.GC6436@paquier.xyz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-hackers

On Tue, Apr 21, 2020 at 12:09:25PM +0900, Kyotaro Horiguchi wrote:
> + if (!XLogArchivingAlways() &&
> + GetRecoveryState() == RECOVERY_STATE_ARCHIVE)
>
> Is rewritten as
>
> + if (!XLogArchivingAlways() &&
> + GetDBState() > DB_IN_CRASH_RECOVERY)
>
> FWIW, what annoyed me is there are three variables that are quite
> similar but has different domains, ControlFile->state,
> XLogCtl->SharedRecoveryState, and LocalRecoveryInProgress. I didn't
> mind there were two, but three seems a bit too many to me.

That's actually the pattern I would avoid for clarity. There is no
need to add more dependencies to the entries of DBState for the sake
of this patch, and this smells like a trap if more values are added to
it in an order that does not match what we have been assuming in the
context of this thread.
--
Michael

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Hamid Akhtar 2020-04-21 05:00:05 Re: Bug with memory leak on cert validation in libpq
Previous Message Michael Paquier 2020-04-21 04:42:35 Re: Bug with memory leak on cert validation in libpq

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2020-04-21 04:58:20 Re: Fix for pg_statio_all_tables
Previous Message Michael Paquier 2020-04-21 04:52:46 Re: Do we need to handle orphaned prepared transactions in the server?