[pgpool-general: 1404] pgool-II 3.2.3 released

Nozomi Anzai 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:
http://www.pgpool.net/download.php?f=pgpool-II-3.2.3.tar.gz

===========================================================================
pgpool-II 3.2.3
http://www.pgpool.net/docs/pgpool-II-3.2.3/NEWS.txt
===========================================================================

- Fix connect_inet_domain_socket_by_port() bug introduced in 3.2.2.
  (Tatsuo Ishii)

      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
      the foot.

- Fix to show pool_passwd in "SHOW pool_status". (Yugo Nagata)

- Fix a typo at configure's help in configure.in. (Yugo Nagata)

===========================================================================
-- 
Nozomi Anzai
SRA OSS, Inc. Japan


More information about the pgpool-general mailing list