[pgpool-general-jp: 1136] pgool-II 3.2.3 released

Nozomi Anzai anzai @ sraoss.co.jp
2013年 2月 18日 (月) 14:55:13 JST


安齋です。

pgpool-II 3.2.3 をリリースしましたのでお知らせします。
これはおもに、先日リリースした 3.2.2 のヘルスチェックに関する致命的な問題を
修正するものです。

フェイルオーバ発生時に pgpool のメインプロセスが消滅して pgpool-II へのクラ
イアントの接続がすべてハングする、という事象で、以下の条件がすべて満たされ
たときに発生します。また、その状態から復帰するには、pgpool の子プロセスを手
動で kill し、pgpool-II を再起動するしかありませんでした。

  - ヘルスチェックが有効である。
  - PostgreSQL への接続を、UNIX ドメインソケットではなく TCP/IP で行なって
    いる(※ pgpool.conf のバックエンドノード設定において "backend_hostnameN"
    が空欄でない)。

以下からダウンロードすることができます。
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/pgpool-ja.html#release3.2.3
===========================================================================

- 3.2.2 で入り込んだ connect_inet_domain_socket_by_port() の バグを修正しま
  した。 (Tatsuo Ishii)

  接続において non blocking の connect() が EINPROGRESS や EALREADY という
  結果を返したときには、 select(2) を呼んで read / write ファイルディスクリ
  プタの準備されるまで待つようにしました。

  本来は select() が 0 以上を返したときにそうするべきところを、0 を返したと
  きだけになっていました。 その結果、connect_inet_domain_socket_by_port()
  が実際には失敗しているのに 成功していたと誤って返していました。

  またさらに、これによって health_check() がバックエンドが生きているものと
  誤認し、 バックエンドソケットに書き込みを行なおうとし、失敗していました。
  これをトリガに notice_backend_error() が呼ばれ、SIGUSR1 シグナルが pgpool
  のメインプロセスの 親プロセスに送られます。 その結果、pgpool をシェルから
  起動していれば、シェルを kill する、ということになります。

  pgpool をバックグラウンドで起動していれば #1 プロセスを kill します。これ
  は、pgpool を root として起動していなければ問題ありません。 もっとも root
  として起動していても、SIGUSR1 を受け取って /dev/initctl を再度 open する
  だけなので、 実際に問題はありません。

  これらの困った問題は pgpool が誕生した時点から存在していましたが、
  connect_inet_domain_socket_by_port() のバグによって表面化しました。 修正
  には、notice_backend_error() と child_exit() を変更し、 pgpool のメインプ
  ロセス自体から呼ばれたときには、自分自身を kill しないように、何も行なわ
  ないようにしました。

- 設定パラメータの一覧を表示する "SHOW pool_status" で pool_passwd が表示さ
  れていないのを修正しました。(Yugo Nagata)

- configure.in にある configure のヘルプの typo を修正しました。 (Yugo
  Nagata)

===========================================================================

-- 
Nozomi Anzai
SRA OSS, Inc. Japan


pgpool-general-jp メーリングリストの案内