Re: [BUG] Checkpointer on hot standby runs without looking checkpoint_segments

Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>

From: Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>
To: Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>
Cc: heikki.linnakangas@enterprisedb.com, masao.fujii@gmail.com, pgsql-hackers@postgresql.org
Date: 2012-04-17T14:50:14Z
Lists: pgsql-hackers

Attachments

Hello, this message is attached with the patch which did not
tested. That is for show the way.

On Tue, Apr 17, 2012 at 9:38 PM, Kyotaro HORIGUCHI
<horiguchi.kyotaro@lab.ntt.co.jp> wrote:
> But I think referring checkpoint_segment on such case should be
> inhibited, and I suppose it is possible using StandbyMode in
> IsCheckpointOnSchedule(), I suppose.
>
> I will correct the patch later.

Hmm. StandbyMode is a local variable which cannot be accessed in
checkpointer. But WalRcvInProgress() which shows if wal receiver
is running seems to be usable to ENABLE governing progress by
checkpoint_segments.

| IsCheckpointOnSchedule(double progress)
| {
....
|    /*
|     * Inhibit governing progress by segments in archive recovery.
|     */
|    recovery_in_progress = RecoveryInProgress();
|    if (!recovery_in_progress || WalRcvInProgress())
|    {
|            recptr = recovery_in_progress ? GetXLogReplayRecPtr(NULL) :
|                    GetInsertRecPtr();


How about this?

regards,

--
Kyotaro Horiguchi
NTT Open Source Software Center

== My e-mail address has been changed since Apr. 1, 2012.