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
|
Список | 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 по дате отправления: