[pgpool-general-jp: 1298] pgpool-II 3.3.3, 3.2.9, 3.1.12, 3.0, 16 released
Yugo Nagata
nagata @ sraoss.co.jp
2014年 9月 6日 (土) 00:16:52 JST
長田です。
pgpool-II 3.3.3, 3.2.9, 3.1.12, 3.0,16 をリリースしましたので
お知らせいたします。
以下からダウンロードすることができます。
http://pgpool.net/mediawiki/index.php/Downloads
===============================================================================
3.3.4 (tokakiboshi) 2014/09/05
* 概要
このバージョンは 3.3.3 に対するバグ修正リリースです。
__________________________________________________________________
* バグ修正
- pgpool.spec のタイポを修正しました。(Yugo Nagata)
- プライマリバックエンドが存在しない場合に、ワーカー子プロセスが
終了と再起動を繰り返すバグを修正しました。(Tatsuo Ishii)
問題の同定と修正は Junegunn Choi さんの貢献によります。
詳しくは、[pgpool-hackers: 471] を参照してください。
- スマートシャットダウンの実行時には受信用ソケットを閉じるように
修正しました。(Tatsuo Ishii)
スマートシャットダウンが実行された場合でも、pgpool の子プロセスは
受信用のポートを開いており、最終的に失敗するにもかからわずクライ
アントは接続要求を送信可能です。これは時間の無駄であるでけではなく、
pgpool のフロントにいるロードバランサによる pgpool の停止の検出を
妨げます。
この問題は [pgpool-hackers 474] にて Junegunn Choi によって解析され、
パッチが提供されました。これを Tatsuo Ishii が改良し、inet ドメイン
だけではなく UNIX ドメインのソケットにも対応させました。
- doc: PostgreSQL の statement_timeout によって、リカバリコマンドが終了
させられる可能性を追記しました。(Tatsuo Ishii)
- test: wait_for_pgpool_startup 関数が正しく動いていなかったのを修正しま
した。(Tatsuo Ishii)
- test: watchdog のテストドライバが wait_for_pgpool_startup 関数を正しく
使用するように修正しました。(Tatsuo Ishii)
- ifconfig コマンドの実行時に無害なエラーコードを無視するよう修正しました。
(Yugo Nagata)
Linux で SIGCHLD のハンドラが SIG_IGN となっている場合、fork した子プロセス
の中で execv() を用いて ifconfig や ping などのコマンドを実行した結果、wait()
が実際にはプロセスが正常終了しているにもかからわず、エラーコード ECHILD で
失敗する場合があります。このエラーは無視して、コマンドの実行は成功とみなす
よう修正しました。
- test: スクリプトのコメントに記載漏れのあった -j オプションの説明を
追記しました。(Tatsuo Ishii)
- test: JDBC のレグレッションテストが想定外の失敗するのを修正しました。
(Tatsuo Ishii)
- test: 遅いマシンでレグレッションテストが失敗しないよう修正しました。
(Tatsuo Ishii)
- test: PostgreSQL ライブラリのディレクトリを環境変数で指定できるように
なりました。(Tatsuo Ishii)
- to_regclass 関数を持つ PostgreSQL 9.4 に対応しました。(Tatsuo Ishii)
PostgreSQL 9.4 は pgpool_regclass と同じ機能を持つ組み込み関数
to_regclass を持っています。そのため、pgpool はまず to_regclass
を探し、その後に pgpool_regclass を探すようになりました。
- SO_REUSEPORT に関するコードの移植性の問題を修正しました。(Tatsuo Ishii)
何か所かで、setsockopt(sock, SOL_SOCKET, SO_REUSEPORT...) を使用していま
すが、SO_REUSEPORT は全ての Linux カーネルで使用可能ではありません。その
ためコンパイル時に ifdef を用いて機能の有無を判断していました。しかし、
あるカーネルで作成したバイナリが他のカーネルで実行できないという問題が
あったため、setsockopt() が返すエラーコードを用いて実行時に機能の有無を
判断するように修正しました。
- dic: 現在は当てはまらない古い制限事項を削除しました。(Tatsuo Ishii)
- text_to_lsn() 関数の返却値型を修正しました。(Yugo Nagata)
コンパイル時の警告の原因となっていました。
- デーモン化した際にファイル識別子が閉じられていなかったのを修正しました。
(Tatsuo Ishii)
Coverity の報告 #1111471 によります。
- メモリリークを修正しました。 (Tatsuo Ishii)
Coverity の報告 #1111442 によります。
- 長らく放置されていた pgool.init の stop/restart のバグを修正しました。
(Yugo Nagata)
以前は pgpool の停止に pgpool.init は killproc を用いていましたが、
これにはいくつか問題がありました。これを、"pgpool -m fast stop" を
用いるように修正しました。
Ryan DeShone により提供されたパッチを Yugo Nagata が修正しました。
詳しくは、[pgpool-hackers: 239][pgpool-hackers: 512] を参照してください。
- pgpool_setup とレグレッションテストが Ubuntu で動くよう修正しました。
(Tatsuo Ishii)
- test: -i オプション(pgpool インストールディレクトリの指定)が動作して
いなかったのを修正しました。(Tatsuo Ishii)
- 不足していたインクルードファイル sys/wait.h を追加しました。(Tatsuo Ishii)
bug #104 の報告によります。
http://www.pgpool.net/mantisbt/view.php?id=104
- 仮想IPの切り替わり時に、新しいアクティブ pgpool で起こる ping エラーの
無限ループを修正しました。(Yugo Nagata)
また、新アクティブが無限ループにより応答できなくなるため、これの応答を
待っている旧アクティブ pgpool がハングする原因にもなっていました。
この問題は [pgpool-hackers: 520] にて Qian Peng により報告されました。
- オンラインリカバリの実行時は PostgreSQL の statement_timeout を無効
んするようになりました。(Tatsuo Ishii)
オンラインリカバリは異常に長い時間を要する可能性がある一方、ユーザは
enable_statment を有効にしている可能性があります。これによりオンライン
リカバリがキャンセルされるのを防ぐため、リカバリの最中は statement
timeout を無効にするようになりました。
詳しくは [pgpool-general: 2919] を参照してください。
- pool_table_nameto_oid 関数が PostgreSQL 9.4 で導入された to_regclass
を使えるように修正しました。(Tatsuo Ishii)
ここで用いる relcache 関数は、対象のテーブルが存在しない場合は 0 を返す
必要がありますが、to_regclass はこの場合 NULL を返します。これに対処
するため COALESCE を用いるように修正しました。
- test: PostgreSQL 9.4 以降でレグレッションテスト #057 がハングするバグ
を修正しました。(Tatsuo Ishii)
PostgreSQL 9.4 以降では libpq の振る舞いに変化があり、接続文字列の
username が NULL の場合でもエラーになりません。以前のテストはエラー
になることが前提となっていました。
- ping コマンド失敗時にパイプを閉じるように修正しました。(Yugo Nagata)
このバグにより "pipe open error: Too many open files" を引き起こすため、
watchdog 有効時に上位サーバへの接続確認が失敗し、その結果 pgpool がダウン
ステータスとなってしまうことがありました。
- リソースリークを修正しました。(Muhanmmad Usama)
Coverity の報告 #1222998, #1222999 によります。
- pcp_detach_node コマンドが接続中のセッションを切断することを記載しました。
(Tatsuo Ishii)
- pgpool_setup が生成する failover.sh を修正しました。(Tatsuo Ishii)
常に node0 か node1 を昇格させようとしており、3ノード以上の構成に
対応していませんでした。
- unsigned int 変数の意味の無い符号のチェックを取り除きました。
(Tatsuo Ishii)
Coverity の報告 #1111419, #1111420, #1111422 によります。
- strcpy() をより安全で推奨される strlcpy() に置き換えました。
(Muhammad Usama)
Coverity の報告 #1111480 によります。
- openssl に対応させるよう pgpool.spec を修正しました。(Tatsuo Ishii)
- pgpool.spec が 3.3-stable ツリーの head を使用するよう修正しました。
(Tatsuo Ishii)
- 不適切にセマフォを削除しないよう不必要な pool_shmem_exit() 呼び出しを
取り除きました。(Tatsuo Ishii)
exit_handler はプロセスが親プロセスがどうかをチェックしていますが、
子プロセスであった場合にも pool_shmem_exit() が呼ばれることがあり、
これにより不適切にセマフォが削除されていました。この関数は親プロセス
意外に呼ばれてはなりません。
bug #102 によります。
http://www.pgpool.net/mantisbt/view.php?id=102
- get_insert_command_tabel_name() 関数が開放済ポインタを使用しないよう
修正しました。(Muhammad Usama)
Coverity の報告 #1223007 によります。
- pool_handle_query_cache() 関数が NULL ポインタを開放しないよう修正
しました。(Tatsuo Ishii)
- 頼りないネットワークのため、connect() のタイムアウトを長め(10秒)に変更
しました。(Tatsuo Ishii)
AWS などの頼りないネットワークに対応するため、connect_inet_domain_socket_by_port()
の中の connect()のタイムアウトを1秒から10秒に変更しました。これにより頻発していた
フェイルオーバを減らすことができます。
- リセット用クエリにより発生するハングを修正しました。(Tatsuo Ishii)
DISCARD ALL などのリセットクエリが完了せず、pgpool の子プロセスが
バックエンドからの反応を待ったまま固まってしまい、新しいクライアント
からの接続が受けられなくなる問題が報告されました。
原因はまだ特定されていませんが、クライアントの接続がクエリ処理の最中
に突然切断された場合、バックエンドがクエリを処理できない状態となり、
リセットクエリを受け付けられなくのかもしれません。
これに対処するため、フロントエンドから接続が予期せず切断された場合は、
クエリ処理ループを即座に終了し PostgreSQL への接続を切断し、
新しい接続要求を待つように修正しました。
また client_idle_limit が設定されており、リミットに達した場合にも
pgpool はバックエンドへの接続を切断するよう修正されました。
bug #107 の報告によります。
http://www.pgpool.net/mantisbt/view.php?id=107
- その他の何十もの Coverity 報告バグが修正されました。(Muhammad Usama)
===============================================================================
3.2.9 (namameboshi) 2014/09/05
* 概要
このバージョンは 3.2.8 に対するバグ修正リリースです。
__________________________________________________________________
* バグ修正
- pgpool.spec のタイポを修正しました。(Yugo Nagata)
- プライマリバックエンドが存在しない場合に、ワーカー子プロセスが
終了と再起動を繰り返すバグを修正しました。(Tatsuo Ishii)
問題の同定と修正は Junegunn Choi さんの貢献によります。
詳しくは、[pgpool-hackers: 471] を参照してください。
- スマートシャットダウンの実行時には受信用ソケットを閉じるように
修正しました。(Tatsuo Ishii)
スマートシャットダウンが実行された場合でも、pgpool の子プロセスは
受信用のポートを開いており、最終的に失敗するにもかからわずクライ
アントは接続要求を送信可能です。これは時間の無駄であるでけではなく、
pgpool のフロントにいるロードバランサによる pgpool の停止の検出を
妨げます。
この問題は [pgpool-hackers 474] にて Junegunn Choi によって解析され、
パッチが提供されました。これを Tatsuo Ishii が改良し、inet ドメイン
だけではなく UNIX ドメインのソケットにも対応させました。
- doc: PostgreSQL の statement_timeout によって、リカバリコマンドが終了
させられる可能性を追記しました。(Tatsuo Ishii)
- dic: 現在は当てはまらない古い制限事項を削除しました。(Tatsuo Ishii)
- text_to_lsn() 関数の返却値型を修正しました。(Yugo Nagata)
コンパイル時の警告の原因となっていました。
- デーモン化した際にファイル識別子が閉じられていなかったのを修正しました。
(Tatsuo Ishii)
Coverity の報告 #1111471 によります。
- メモリリークを修正しました。 (Tatsuo Ishii)
Coverity の報告 #1111442 によります。
- 長らく放置されていた pgool.init の stop/restart のバグを修正しました。
(Yugo Nagata)
以前は pgpool の停止に pgpool.init は killproc を用いていましたが、
これにはいくつか問題がありました。これを、"pgpool -m fast stop" を
用いるように修正しました。
Ryan DeShone により提供されたパッチを Yugo Nagata が修正しました。
詳しくは、[pgpool-hackers: 239][pgpool-hackers: 512] を参照してください。
- 不足していたインクルードファイル sys/wait.h を追加しました。(Tatsuo Ishii)
bug #104 の報告によります。
http://www.pgpool.net/mantisbt/view.php?id=104
- オンラインリカバリの実行時は PostgreSQL の statement_timeout を無効
んするようになりました。(Tatsuo Ishii)
オンラインリカバリは異常に長い時間を要する可能性がある一方、ユーザは
enable_statment を有効にしている可能性があります。これによりオンライン
リカバリがキャンセルされるのを防ぐため、リカバリの最中は statement
timeout を無効にするようになりました。
詳しくは [pgpool-general: 2919] を参照してください。
- 不適切にセマフォを削除しないよう不必要な pool_shmem_exit() 呼び出しを
取り除きました。(Tatsuo Ishii)
exit_handler はプロセスが親プロセスがどうかをチェックしていますが、
子プロセスであった場合にも pool_shmem_exit() が呼ばれることがあり、
これにより不適切にセマフォが削除されていました。この関数は親プロセス
意外に呼ばれてはなりません。
bug #102 によります。
http://www.pgpool.net/mantisbt/view.php?id=102
===============================================================================
3.1.12 (hatsuiboshi) 2014/09/05
* 概要
このバージョンは 3.1.11 に対するバグ修正リリースです。
__________________________________________________________________
* バグ修正
- pgpool.spec のタイポを修正しました。(Yugo Nagata)
- プライマリバックエンドが存在しない場合に、ワーカー子プロセスが
終了と再起動を繰り返すバグを修正しました。(Tatsuo Ishii)
問題の同定と修正は Junegunn Choi さんの貢献によります。
詳しくは、[pgpool-hackers: 471] を参照してください。
- スマートシャットダウンの実行時には受信用ソケットを閉じるように
修正しました。(Tatsuo Ishii)
スマートシャットダウンが実行された場合でも、pgpool の子プロセスは
受信用のポートを開いており、最終的に失敗するにもかからわずクライ
アントは接続要求を送信可能です。これは時間の無駄であるでけではなく、
pgpool のフロントにいるロードバランサによる pgpool の停止の検出を
妨げます。
この問題は [pgpool-hackers 474] にて Junegunn Choi によって解析され、
パッチが提供されました。これを Tatsuo Ishii が改良し、inet ドメイン
だけではなく UNIX ドメインのソケットにも対応させました。
- doc: PostgreSQL の statement_timeout によって、リカバリコマンドが終了
させられる可能性を追記しました。(Tatsuo Ishii)
- dic: 現在は当てはまらない古い制限事項を削除しました。(Tatsuo Ishii)
- text_to_lsn() 関数の返却値型を修正しました。(Yugo Nagata)
コンパイル時の警告の原因となっていました。
- デーモン化した際にファイル識別子が閉じられていなかったのを修正しました。
(Tatsuo Ishii)
Coverity の報告 #1111471 によります。
- メモリリークを修正しました。 (Tatsuo Ishii)
Coverity の報告 #1111442 によります。
- 長らく放置されていた pgool.init の stop/restart のバグを修正しました。
(Yugo Nagata)
以前は pgpool の停止に pgpool.init は killproc を用いていましたが、
これにはいくつか問題がありました。これを、"pgpool -m fast stop" を
用いるように修正しました。
Ryan DeShone により提供されたパッチを Yugo Nagata が修正しました。
詳しくは、[pgpool-hackers: 239][pgpool-hackers: 512] を参照してください。
- オンラインリカバリの実行時は PostgreSQL の statement_timeout を無効
んするようになりました。(Tatsuo Ishii)
オンラインリカバリは異常に長い時間を要する可能性がある一方、ユーザは
enable_statment を有効にしている可能性があります。これによりオンライン
リカバリがキャンセルされるのを防ぐため、リカバリの最中は statement
timeout を無効にするようになりました。
詳しくは [pgpool-general: 2919] を参照してください。
- 不適切にセマフォを削除しないよう不必要な pool_shmem_exit() 呼び出しを
取り除きました。(Tatsuo Ishii)
exit_handler はプロセスが親プロセスがどうかをチェックしていますが、
子プロセスであった場合にも pool_shmem_exit() が呼ばれることがあり、
これにより不適切にセマフォが削除されていました。この関数は親プロセス
意外に呼ばれてはなりません。
bug #102 によります。
http://www.pgpool.net/mantisbt/view.php?id=102
===============================================================================
3.0.16 (umiyameboshi) 2014/09/05
* 概要
このバージョンは 3.0.15 に対するバグ修正リリースです。
__________________________________________________________________
* バグ修正
- pgpool.spec のタイポを修正しました。(Yugo Nagata)
- プライマリバックエンドが存在しない場合に、ワーカー子プロセスが
終了と再起動を繰り返すバグを修正しました。(Tatsuo Ishii)
問題の同定と修正は Junegunn Choi さんの貢献によります。
詳しくは、[pgpool-hackers: 471] を参照してください。
- スマートシャットダウンの実行時には受信用ソケットを閉じるように
修正しました。(Tatsuo Ishii)
スマートシャットダウンが実行された場合でも、pgpool の子プロセスは
受信用のポートを開いており、最終的に失敗するにもかからわずクライ
アントは接続要求を送信可能です。これは時間の無駄であるでけではなく、
pgpool のフロントにいるロードバランサによる pgpool の停止の検出を
妨げます。
この問題は [pgpool-hackers 474] にて Junegunn Choi によって解析され、
パッチが提供されました。これを Tatsuo Ishii が改良し、inet ドメイン
だけではなく UNIX ドメインのソケットにも対応させました。
- doc: PostgreSQL の statement_timeout によって、リカバリコマンドが終了
させられる可能性を追記しました。(Tatsuo Ishii)
- dic: 現在は当てはまらない古い制限事項を削除しました。(Tatsuo Ishii)
- text_to_lsn() 関数の返却値型を修正しました。(Yugo Nagata)
コンパイル時の警告の原因となっていました。
- デーモン化した際にファイル識別子が閉じられていなかったのを修正しました。
(Tatsuo Ishii)
Coverity の報告 #1111471 によります。
- メモリリークを修正しました。 (Tatsuo Ishii)
Coverity の報告 #1111442 によります。
- 長らく放置されていた pgool.init の stop/restart のバグを修正しました。
(Yugo Nagata)
以前は pgpool の停止に pgpool.init は killproc を用いていましたが、
これにはいくつか問題がありました。これを、"pgpool -m fast stop" を
用いるように修正しました。
Ryan DeShone により提供されたパッチを Yugo Nagata が修正しました。
詳しくは、[pgpool-hackers: 239][pgpool-hackers: 512] を参照してください。
- オンラインリカバリの実行時は PostgreSQL の statement_timeout を無効
んするようになりました。(Tatsuo Ishii)
オンラインリカバリは異常に長い時間を要する可能性がある一方、ユーザは
enable_statment を有効にしている可能性があります。これによりオンライン
リカバリがキャンセルされるのを防ぐため、リカバリの最中は statement
timeout を無効にするようになりました。
詳しくは [pgpool-general: 2919] を参照してください。
- 不適切にセマフォを削除しないよう不必要な pool_shmem_exit() 呼び出しを
取り除きました。(Tatsuo Ishii)
exit_handler はプロセスが親プロセスがどうかをチェックしていますが、
子プロセスであった場合にも pool_shmem_exit() が呼ばれることがあり、
これにより不適切にセマフォが削除されていました。この関数は親プロセス
意外に呼ばれてはなりません。
bug #102 によります。
http://www.pgpool.net/mantisbt/view.php?id=102
===============================================================================
--
Yugo Nagata <nagata @ sraoss.co.jp>
pgpool-general-jp メーリングリストの案内