[pgpool-general-jp: 768] pgpool-II 2.3.3 released
Nozomi Anzai
anzai @ sraoss.co.jp
2010年 4月 23日 (金) 17:00:52 JST
安齋です。
pgpool-II 2.3.3 をリリースしましたのでお知らせいたします。
このバージョンでは、2.3.2.2 以前の色々なバグが修正されています。
ソースコードは以下からダウンロードできます。
http://pgfoundry.org/frs/download.php/2664/pgpool-II-2.3.3.tar.gz
* 互換性のない変更
- このバージョンから、pgpool が以前より多くの共有メモリを使うように
なったので注意してください。これによる問題が pgpool の起動時に発生し
た場合は、pgpool のログを見てください。 "could not create shared
memory segment: Cannot allocate memory" といったメッセージがあれば、
システムの共有メモリを増やしてください。
- パラレルモードが、レプリケーションモードかロードバランスモードが有効
でないと使えないようになりました。 pgpool-II ではずっと、レプリケー
ションモードかロードバランスモードが有効でないときパラレルモードは正
しく動作していませんでした。(Kitagawa)
- insert_lock のデフォルト値を false に変更しました。これは、マスタ・
スレーブモードでは true にしても無意味なためです。 Fujii Masao さん
の指摘により修正しました。(Tatsuo)
* 新しく追加したドキュメント
- README.online-recovery を追加しました。このドキュメントには、オンラ
インリカバリの内部的なことが書いてあります。
* バグ修正
- 子プロセスが segfault を起こす pgpool-II 1.0 から長い間存在したバグ
を修正しました。これは、親プロセスが shmem サイズの計算を間違えてい
たことに起因します。バグ解析(Kitagawa)、パッチ作成(Tatsuo)
- ドキュメントにパラレルモード用の以下の制約を追記しました。(Kitagawa)
- NATURAL JOIN は使えません。
- USING 句が、クエリ書き換え処理によって ON 句に変換されます。
- パラレルモードのとき、USING 句を含む JOIN 構文の書き換えで発生する可
能性があったクラッシュを修正しました。(Kitagawa) この修正により、以
下のような JOIN 構文が使えるようになります。
例:
- SELECT * FROM a JOIN b USING (aid) JOIN c USING (cid);
- SELECT * FROM a JOIN b USING (aid) JOIN c USING (cid) JOIN d USING
(did)
- パラレルクエリで、分散キー列の前に current_time を含む INSERT 文の
パースができるように修正しました。
- SimpleForwardToBackend() を修正しました。これにより、拡張プロトコル
を使ったクライアントが bind エラーのようなエラーを発生させたときに、
pgpool がバックエンドの応答を待ち続けなくなります。このバグは、マス
タ・スレーブモード、raw モード、コネクションプールモードで発生して
いました。これを修正したことによって、コマンドがエラーになったあと、
エラーを回復させるために SYNC メッセージを送るようになります。
(Kitagawa)
- select() を実行中の pgpool 子プロセスが、SIGINT/SIGQUIT シグナルを
無視するように修正しました。シグナルが送られても pgpool は select()
を再実行しようとするので、結果的にシグナルが無視されます。(Tatsuo)
- connect_inet_domain_socket_by_port/connect_unix_domain_socket_by_port
が SIGTERM/SIGINT/SIGQUIT シグナルを受け取っていないかチェックするよ
うに修正しました。 Daniel Codina さんからのバグ報告に基づきます。
(Tatsuo)
- "kind mismatch" というエラーメッセージを生成する際にクラッシュする可
能性があったので、これを修正しました。以前は問題なかったのですが、
2.3.2 でエンバグしました。(Tatsuo)
- ヘルスチェックにおけるバグを修正しました。コードが抜けたなどでLネッ
トワーク障害が発生したときに、connect() を呼んでいる間はヘルスチェッ
クが行なわれていませんでした。これは、connect() が ALARM シグナルに
よって割り込まれた際に、 connect_unix_domain_socket()/
connect_inet_domain_socket() が再試行していたためです。この修正で
は、上記の関数に対して再試行をコントロールするような引数を追加してい
ます。これは、Daniel Codina さんのバグ報告と分析に基づく修正です。
(Tatsuo)
- 2.3.2.2 で、SimpleForwardToBackend でのタイムスタンプの書き換えにお
いてエンバグしていたので、これを修正しました。これは、バグトラック
#1010771 にある Peter Pramberge さんらの報告に基づきます。 (Tatsuo)
- パラレルクエリにおける "*" の書き換えを修正しました。sho さんから提
供いただいたパッチを取り込みました。(Kitagawa)
- connect_inet_domain_socket_by_port() でエラーメッセージを出力する際
に、strerror() ではなく hstrerror() を使うように修正しました。(Tatsuo)
--
Nozomi Anzai
SRA OSS, Inc. Japan
pgpool-general-jp メーリングリストの案内