BUG #6676: checkpointer does not work by SIGINT.
The following bug has been logged on the website:
Bug reference: 6676
Logged by: Tomonari Katsumata
Email address: katsumata.tomonari@po.ntts.co.jp
PostgreSQL version: Unsupported/Unknown
Operating system: RHEL 5.7 x86_64
Description:
Hi,
Now I'm testing the behavior of checkpointer,
and I found a difference with PostgreSQL9.1 behavior.
When I send SIGINT signal to writer process on PostgreSQL9.1,
writer process starts checkpoint.
But, when I send SIGINT signal to checkpointer on PostgreSQL9.2beta2,
checkpointer doesn't start checkpoint.
<PostgreSQL 9.1.3>
change the config file(postgresql.conf) to log information about
checkpoint.
log_checkpoints = on
logging_collector = on
$ psql postgres -c "create table tbl(i int)"
CREATE TABLE
$ psql postgres -c "insert into tbl values(1);"
INSERT 0 1
$ ps faxww | grep postgres | grep "writer process"
19706 ? Ss 0:00 \_ postgres: writer process
19707 ? Ss 0:00 \_ postgres: wal writer process
$ kill -2 19706
<log messages>
LOG: checkpoint starting:
LOG: checkpoint complete: wrote 1 buffers (0.0%); 0 transaction log file(s)
added, 0 removed, 0 recycled; write=0.000 s, sync=0.001 s, total=0.004 s;
sync files=1, longest=0.001 s, average=0.001 s
============
<PostgreSQL 9.2beta2>
change the config file(postgresql.conf) to log information about
checkpoint.
log_checkpoints = on
logging_collector = on
$ psql postgres -c "create table tbl(i int);"
CREATE TABLE
$ psql postgres -c "insert into tbl values(1);"
INSERT 0 1
$ ps faxww | grep checkpointer
11526 pts/3 S+ 0:00 | \_ grep checkpointer
11482 ? Ss 0:00 \_ postgres: checkpointer process
$ kill -2 11482
<no log messages>
============
I know "latch" is introduced on PostgreSQL9.2,
but I'm not sure this is a bug or not.
Is this a desirable behavior of "latch" ?
katsumata.tomonari@po.ntts.co.jp writes:
Now I'm testing the behavior of checkpointer,
and I found a difference with PostgreSQL9.1 behavior.
When I send SIGINT signal to writer process on PostgreSQL9.1,
writer process starts checkpoint.
But, when I send SIGINT signal to checkpointer on PostgreSQL9.2beta2,
checkpointer doesn't start checkpoint.
AFAICT, the checkpointer does consider starting a checkpoint, but it
decides not to do one, because of this recent change:
http://git.postgresql.org/gitweb/?p=postgresql.git&a=commitdiff&h=18fb9d8d21a28caddb72c7ffbdd7b96d52ff9724
If you had done enough updates since the last checkpoint, it would do
one. So this isn't a bug, but an intentional reduction in checkpoint
frequency. (Note that sending SIGINT is not, and never has been,
equivalent to forcing a checkpoint.)
regards, tom lane
Hi,
Thank you for explanation about it.
I've understood that it is intended thing.
Sorry to bother you.
regards,
(2012/06/07 2:05), Tom Lane wrote:
katsumata.tomonari@po.ntts.co.jp writes:
Now I'm testing the behavior of checkpointer,
and I found a difference with PostgreSQL9.1 behavior.
When I send SIGINT signal to writer process on PostgreSQL9.1,
writer process starts checkpoint.
But, when I send SIGINT signal to checkpointer on PostgreSQL9.2beta2,
checkpointer doesn't start checkpoint.AFAICT, the checkpointer does consider starting a checkpoint, but it
decides not to do one, because of this recent change:
Show quoted text
If you had done enough updates since the last checkpoint, it would do
one. So this isn't a bug, but an intentional reduction in checkpoint
frequency. (Note that sending SIGINT is not, and never has been,
equivalent to forcing a checkpoint.)regards, tom lane
Tomonari Katsumata <katsumata.tomonari@po.ntts.co.jp> writes:
Thank you for explanation about it.
I've understood that it is intended thing.
Sorry to bother you.
No, actually it's a good thing you brought it up, because we're now
reconsidering whether that patch was a good idea or not ...
http://archives.postgresql.org/pgsql-hackers/2012-06/msg00160.php
regards, tom lane