Re: [COMMITTERS] pgsql: pg_ctl: Detect current standby state from pg_control

From: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
To: Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: [COMMITTERS] pgsql: pg_ctl: Detect current standby state from pg_control
Date: 2016-09-27 00:55:40
Message-ID: CAB7nPqT5BV0Cra4hrbC_OfL_7vyBLyQ9uyu0LUO1hg3X8kg6WQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers pgsql-hackers

On Tue, Sep 27, 2016 at 9:45 AM, Peter Eisentraut
<peter(dot)eisentraut(at)2ndquadrant(dot)com> wrote:
> On 9/26/16 7:56 PM, Peter Eisentraut wrote:
>> On 9/26/16 8:53 AM, Tom Lane wrote:
>>> I think that it's 100% pointless for get_control_dbstate
>>> to be worried about transient CRC failures. If writes to pg_control
>>> aren't atomic then we have problems enormously larger than whether
>>> "pg_ctl promote" throws an error or not.
>>
>> The new code was designed to handle that, but if we think it's not an
>> issue, then we can simplify it. I'm on it.
>
> How about this?

+ if (crc_ok_p)
+ *crc_ok_p = false;
+ else
+ {
+ pfree(ControlFile);
+ return NULL;
+ }
Seems overcomplicated to me. How about returning the control file all
the time and let the caller pfree the result? You could then use
crc_ok in pg_ctl.c's get_control_dbstate() to do the decision-making.

Also, if the sleep() loop is removed for promote -w, we assume that
we'd fail immediately in case of a corrupted control file. Could it be
possible that after a couple of seconds the backend gets it right and
overwrites a correct control file on top of a corrupted one? I am just
curious about such possibilities, still I am +1 for removing the
pg_usleep loop and failing right away as you propose.

If we do the renaming of get_controlfile(), it may be also a good idea
to do the same for get_configdata() in config_info.c for consistency.
That's not really critical IMHO though.
--
Michael

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Eisentraut 2016-09-27 02:35:27 pgsql: Fix some typos in comment
Previous Message Peter Eisentraut 2016-09-27 00:45:41 Re: [COMMITTERS] pgsql: pg_ctl: Detect current standby state from pg_control

Browse pgsql-hackers by date

  From Date Subject
Next Message Craig Ringer 2016-09-27 01:23:21 Re: [PATCH] Transaction traceability - txid_status(bigint)
Previous Message Peter Eisentraut 2016-09-27 00:45:41 Re: [COMMITTERS] pgsql: pg_ctl: Detect current standby state from pg_control