Re: [Bug fix]There is the case archive_timeout parameter is ignored after recovery works.
От
Kyotaro Horiguchi
Тема
Re: [Bug fix]There is the case archive_timeout parameter is ignored after recovery works.
Дата
Msg-id
20200630.091423.1542668690374745736.horikyota.ntt@gmail.com
Ответ на
RE: [Bug fix]There is the case archive_timeout parameter is ignoredafter recovery works. (higuchi.daisuke@fujitsu.com)
Список
Дерево обсуждения
[Bug fix]There is the case archive_timeout parameter is ignored afterrecovery works. "higuchi.daisuke@fujitsu.com" <higuchi.daisuke@fujitsu.com>
Re: [Bug fix]There is the case archive_timeout parameter isignored after recovery works. Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Re: [Bug fix]There is the case archive_timeout parameter is ignoredafter recovery works. Fujii Masao <masao.fujii@oss.nttdata.com>
RE: [Bug fix]There is the case archive_timeout parameter is ignoredafter recovery works. "higuchi.daisuke@fujitsu.com" <higuchi.daisuke@fujitsu.com>
Re: [Bug fix]There is the case archive_timeout parameter is ignored after recovery works. Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Re: [Bug fix]There is the case archive_timeout parameter is ignored after recovery works. Fujii Masao <masao.fujii@oss.nttdata.com>
RE: [Bug fix]There is the case archive_timeout parameter is ignored after recovery works. "higuchi.daisuke@fujitsu.com" <higuchi.daisuke@fujitsu.com>
Re: [Bug fix]There is the case archive_timeout parameter isignored after recovery works. Kyotaro Horiguchi <horikyota.ntt@gmail.com>
RE: [Bug fix]There is the case archive_timeout parameter is ignoredafter recovery works. "higuchi.daisuke@fujitsu.com" <higuchi.daisuke@fujitsu.com>
Opps! I misunderstood that.
At Mon, 29 Jun 2020 13:00:25 +0000, "higuchi.daisuke@fujitsu.com" wrote in
> Fujii-san, thank you for comments.
>
> >The cause of this problem is that the checkpointer's sleep time is calculated
> >from both checkpoint_timeout and archive_timeout during normal running,
> >but calculated only from checkpoint_timeout during recovery. So Daisuke-san's
> >patch tries to change that so that it's calculated from both of them even
> >during recovery. No?
>
> Yes, it's exactly so.
>
> >last_xlog_switch_time is not updated during recovery. So "elapsed_secs" can be
> >large and cur_timeout can be negative. Isn't this problematic?
>
> Yes... My patch was missing this.
The patch also makes WaitLatch called with zero timeout, which causes
assertion failure.
> How about using the original archive_timeout value for calculating cur_timeout during recovery?
>
> if (XLogArchiveTimeout > 0 && !RecoveryInProgress())
> {
> elapsed_secs = now - last_xlog_switch_time;
> if (elapsed_secs >= XLogArchiveTimeout)
> continue; /* no sleep for us ... */
> cur_timeout = Min(cur_timeout, XLogArchiveTimeout - elapsed_secs);
> }
> + else if (XLogArchiveTimeout > 0)
> + cur_timeout = Min(cur_timeout, XLogArchiveTimeout);
>
> During recovery, accurate cur_timeout is not calculated because elapsed_secs is not used.
> However, after recovery is complete, WAL archiving will start by the next archive_timeout is reached.
> I felt it is enough to solve this problem.
That causes unwanted change of cur_timeout during recovery.
> >As another approach, what about waking the checkpointer up at the end of
> >recovery like we already do for walsenders?
We don't want change checkpoint interval during recovery, that means
we cannot cnosider archive_timeout at the fist checkpointer after
recovery ends. So I think that the suggestion from Fujii-san is the
direction.
> If the above solution is not good, I will consider this approach.
regards.
--
Kyotaro Horiguchi
NTT Open Source Software Center
В списке pgsql-hackers по дате отправления
От: David Rowley
Дата:
От: Fujii Masao
Дата: