Doesn't pgstat_report_wal() handle the argument "force" incorrectly

Поиск
Список
Период
Сортировка
От Ryoga Yoshida
Тема Doesn't pgstat_report_wal() handle the argument "force" incorrectly
Дата
Msg-id f87a4d7be70530606b864fd1df91718c@oss.nttdata.com
обсуждение исходный текст
Ответы Re: Doesn't pgstat_report_wal() handle the argument "force" incorrectly  (Michael Paquier <michael@paquier.xyz>)
Список pgsql-hackers
Hi,

pgstat_report_wal() calls pgstat_flush_wal() and pgstat_flush_io(). When 
calling them, pgstat_report_wal() specifies its argument "force" as the 
argument of them, as follows. But according to the code of 
pgstat_flush_wal() and pgstat_flush_io(), their argument is "nowait" and 
its meaning seems the opposite of "force". This means that, even when 
checkpointer etc calls pgstat_report_wal() with force=true to forcibly 
flush the statistics, pgstat_flush_wal() and pgstat_flush_io() skip 
flushing the statistics if they fail to acquire the lock immediately 
because they are called with nowait=true. This seems unexpected behavior 
and a bug.
void
pgstat_report_wal(bool force)
{
    pgstat_flush_wal(force);

    pgstat_flush_io(force);
}

BTW, pgstat_report_stat() treats "nowait" and "force" as the opposite 
one, as follows.
/* don't wait for lock acquisition when !force */
nowait = !force;

Ryoga Yoshida



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

Предыдущее
От: Peter Geoghegan
Дата:
Сообщение: Re: [HACKERS] Should logtape.c blocks be of type long?
Следующее
От: Ryoga Yoshida
Дата:
Сообщение: Doesn't pgstat_report_wal() handle the argument "force" incorrectly