[pgpool-general: 1404] pgool-II 3.2.3 released
anzai at sraoss.co.jp
Mon Feb 18 14:54:44 JST 2013
pgpool Global Development Group is pleased to announce the availability
of pgpool-II 3.2.3.
This is a bug fix release against pgpool-II 3.2.2. Main purpose of this
release is to fix fatal problem with pgpool-II 3.2.2's health checking.
If all of following conditions are met, pgpool main process disappeared and
all client connections to pgpool-II hang forever when failover happens.
And the only way to recover from it is, manualy killing the pgpool child
process and restart pgpool-II.
- health checking is enabled
- connecting method to PostgreSQL is TCP/IP, not UNIX domain socket(i.e.
"backend_hostnameN" is not empty string)
You can download the source codes from:
- Fix connect_inet_domain_socket_by_port() bug introduced in 3.2.2.
When non blocking connect() reports EINPROGRESS or EALREADY, it
calls select(2) to wait for read or write fd ready. However it
mistakenly checks error condition using getsockopt(). It should
be called when select() returns > 0, rather than 0. Because of
this, connect_inet_domain_socket_by_port() could return
succeeded fd even it actually failed.
And what is worse, this health_check() mistakenly believes that
backend is alive and tries to write to backend socket, which of
course fails. This triggers to call notice_backend_error(),
which sends SIGUSR1 signal to pgpool main's parent process. This
will result in various weird things: for example, if you start
pgpool from a shell, the signal kills the shell. If you start
pgpool in background, pgpool's parent is the process #1. As long
as you started pgpool as non root, it's ok. Even if you start
pgpool as root, init just reopens /dev/initctl by receiving
SIGUSR1. These all annoying bugs have been there since pgpool
was born. The connect_inet_domain_socket_by_port() bug just
reveals it. To fix this, I modified notice_backend_error and
child_exit() so that it does nothing when called from pgpool
main process itself to prevent pgpool from shooting itself in
- Fix to show pool_passwd in "SHOW pool_status". (Yugo Nagata)
- Fix a typo at configure's help in configure.in. (Yugo Nagata)
SRA OSS, Inc. Japan
More information about the pgpool-general