RE: [Bug fix]There is the case archive_timeout parameter is ignoredafter recovery works.

Поиск
Список
Период
Сортировка
От higuchi.daisuke@fujitsu.com
Тема RE: [Bug fix]There is the case archive_timeout parameter is ignoredafter recovery works.
Дата
Msg-id OSBPR01MB175184E0B21ADE77043EADE8EC6E0@OSBPR01MB1751.jpnprd01.prod.outlook.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 ignored after recovery works.  (Kyotaro Horiguchi <horikyota.ntt@gmail.com>)
Список pgsql-hackers
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.
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.

>As another approach, what about waking the checkpointer up at the end of
>recovery like we already do for walsenders?

If the above solution is not good, I will consider this approach.

Regards,
Daisuke, Higuchi



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Masahiko Sawada
Дата:
Сообщение: Re: xid wraparound danger due to INDEX_CLEANUP false
Следующее
От: Peter Eisentraut
Дата:
Сообщение: Re: some more pg_dump refactoring