[pgpool-general-jp: 1135] pgpool-II 3.2.2, 3.1.6, 3.0.10, and pgpoolAdmin 3.2.2 released
Yugo Nagata
nagata @ sraoss.co.jp
2013年 2月 8日 (金) 19:31:35 JST
長田です。
pgpool-II 3.2.2, 3.1.6, 3.0.10, pgpoolAdmin 3.2.2 をリリースしましたので
お知らせいたします。これらは、各メジャーバージョンの最新安定版です。
以下からダウンロードすることができます。
http://pgpool.net/mediawiki/index.php/Downloadsz
===========================================================================
pgpool-II 3.2.2
===========================================================================
- FreeBSD で発生するコンパイルエラーを修正しました。 (Tatsuo Ishii)
- デフォルトのスキーマ(通常は public)以外で作られたビューが認識
されていなかったバグを修正しました。(Tatsuo Ishii)
このバグのため、本来キャッシュされるべきでない、該当するビューのクエリ結果
がキャッシュされていました。
この問題はバグトラック #30 で jgentsch さんによって報告され、パッチを提供
頂きました。
#30 pgpool 3.2.1 - views in schema other than public are caching
Reporter: 2012-10-19 23:13
Date: jgentsch
http://www.pgpool.net/mantisbt/view.php?id=30
- md5 認証で競合が発生する不具合が修正されました。(Tatsuo Ishii)
pool_passwd のファイル識別子は pgpool の親プロセスで開かれたものが子プロセス
に引き継がれてます。複数の接続で同時に md5 認証を行う際には、pool_get_passwd
が呼ばれ、ファイル識別子が走査されますが、ファイル識別子が共有されるために
md5 認証が失敗することがありました。この問題は、個々の子プロセスで pool_passwd
ファイルを開き直すことで解決されました。
この問題は [pgpool-general:1141] にて、Jason Slagle さんによって報告・解析
されました。
[pgpool-general: 1141] Possible race condition in pool_get_passwd
From: Jason Slagle
Date: Sun, 28 Oct 2012 01:12:52 -0400
http://www.sraoss.jp/pipermail/pgpool-general/2012-October/001160.html
- ロードバランスの条件について、より詳しい情報をマニュアルに追記しました。
(Tatso Ishii)
- オンメモリクエリキャッシュ使用時に発生するセグメンテーションフォルトを修正
しました。これはキャッシュアレイの処理のバグが原因です。 (Tatsuo Isii)
トランザクション中の一時キャッシュの結果を保持するためにキャッシュアレイ使用
されます。1つのトランザクションに 128 以上の SELECT がある場合には、キャッシュ
アレイの領域が realloc を用いて拡張されます。しかし、その時に返却される新しい
ポインタではなく、古いポインタが使われ続けていました。
この問題はバグトラック #31 にて jgentsch さんによって報告されました。
#31 pgpool V3_2_STABLE - segfault in pool_memqcache.c:2529
Reporter:jgentsch
Date: 2012-10-23 06:25
http://www.pgpool.net/mantisbt/view.php?id=31
- pcp_attach_node, pcp_detach_node を繰り返し実行したときに起こるハングアップ
を修正しました。 (Tatsuo Ishii)
pcp_attach_node, pap_detach_node によりノードステータスが変更された時、
failover() は子プロセスに SIGUSR1 シグナルを送り、プロセスの終了とノード
ステータスの更新を行います。その時に発せられた SIGCHLD シグナルは全て
reaper() ハンドラで受信しますが、システムの負荷とタイミングによりこれが失敗する
ことがありました。pcp プロセスによる SIGCHLD シグナルの受信に失敗した場合に、
これがゾンビプロセスとなり、pcp プロセスが永遠に再起動されなくなっていました。
この問題はバグトラック #32 (oleg_myrk さんによる)他で報告されました。
#32 PGPool hangs on pcp_attach/detach
Reporter: oleg_myrk
Date: 2012-10-24 00:01
http://www.pgpool.net/mantisbt/view.php?id=32
- pool_send_severity_message() で未初期化のメモリを使用しないよう修正しました。
(Tatsuo Ishii)
このバグによりセグメンテーション違反が発生することがありました。
バグトラック #33 に投稿された valgrind 実行結果(dudee さんによる)にて
報告されました。
#33 pgpool-II 3.2.1 segfault
Reporter: dudee
Date: 2012-10-30 19:16
http://www.pgpool.net/mantisbt/view.php?id=33
- 通常のテーブルと同名の一時テーブルがあるときに、クエリキャッシュの結果が不正
になるバグを修正しました。 (Tatsuo Ishii)
以下はバグを引き起こす処理の例です。
1) CREATE TABLE t1(i int); -- 通常のテーブルを作成
2) INSERT INTO t1 VALUES(1);
3) SELECT * FROM t1; -- クエリキャッシュが作成される
4) CREATE TEMP TABLE t1(i int); -- 一時テーブルの作成
5) SELECT * FROM t1; -- 誤ったクエリキャッシュが作成される!
#3 で t1 のキャッシュが生成されますが、#5 でこれが不正に使われており、一時
テーブル t1 が一時テーブルと見なされていないのが問題でした。
- ヘルプメッセージに -f オプションの説明を追加しました。 (Tatsuo Ishii)
- pcp または worker 子プロセスの終了イベントを受信したときに、reaper() で
wait3() ループを終了しないように修正しました。 (Tatsuo Ishii)
修正前は、reaper() は子プロセスの終了イベントを誤って無視してしまい、ゾンビ
プロセスを作り、新しいプロセスを生成できないことがありました。
この問題は[pgpool-general-jp: 1123]にて、後藤さんより報告され、修正の示唆を
頂きました。
[pgpool-general-jp: 1123] Re: オンラインリカバリ後にゾンビプロセスになる
From: GOTO, Daisuke
Date: Wed, 21 Nov 2012 19:56:17 +0900
http://www.sraoss.jp/pipermail/pgpool-general-jp/2012-November/001122.html
- configure のヘルプメッセージの typo を修正しました。 (Yugo Nagata)
- wd_hostname を pool_process_reporting.c に追加しました。 (Yugo Nagata)
以前は SHOW pool_status, pcp_pool_status の結果に wd_hostname が出力されて
いませんでした。
- connect(2) が EISCONN(ソケットが接続済み)エラーを返したときには、
connect_inet_domain_socket_by_port() はエラーを出力しないよう修正しました。
(Tatsuo Ishii)
これはノンブロッキングソケットでは起こり得る、正常のこととして扱われるべきです。
バグトラック #29 (by spork)と pgpool-general 1218 (by Mikola Rose) で報告
されました。
#29 pgpool 3.2.1 cannot connect to db hosts
Reporter: spork
Date: 2012-10-18 15:03
http://www.pgpool.net/mantisbt/view.php?id=29
[pgpool-general: 1218] pgpool 3.2.1 - Health check failing to connect
From: Mikola Rose
Date: Tue, 4 Dec 2012 20:21:55 +0000
http://www.sraoss.jp/pipermail/pgpool-general/2012-December/001237.html
- health_check() が template1 データベースに再接続を試みる前に、ヘルスチェック
タイマーをチェックするよう修正しました。 (Tastuo Ishii)
修正前は、ヘルスチェックタイマーが既に期限を向かえているために、0番ノードへの
ヘルスチェックの再接続が常に失敗していました。
- pool_search_relcache() が REAL_MASTER_NODE_ID ではなく MASTER, MASTER_NODE_ID
を使用するように修正しました。 (Tatsuo Ishii)
ストリーミングレプリケーションモードで 0 番ノードがフェールバックした場合、
pgpool は子プロセスを再起動しません。そのとき、REAL_MASTER_NODE_ID は 0 番
ノードの接続情報を探しにいきますが、これはバックエンドへの新しい接続が確立する
まで存在しません。そのため、接続情報の参照によって、セグメンテーションフォルト
が発生していました。この状況でも、MASTER または MASTER_NODE_ID は以前に
キャッシュされたマスターノード ID を見にいくため、安全に使うことが出来ます。
- ストリーミングレプリケーションモードでレプリケーション遅延が大きくなったときに、
"portal not found" エラーが発生するバグを修正しました。 (Tatsuo Ishii)
これは delay_threshold が導入以来、ずっと存在していたバグです。
bind, describe, execute の実行時に遅延が域値を越えた場合、送り先の DB ノードは
変更されていました。しかし、parse がそれとは異なるノードに送られていた場合、
送り先ノードには parse された ステートメントやポータルが存在しないために bind,
describe, execute は失敗していました。 修正後は、大きな遅延が発生した場合でも、
これらは parse が実行されたノード以外には送られないようになりました。
- pg_md5 で、ユーザからのパスワード入力の後には改行するように修正しました。
(Yugo Nagata)
- watchdog のポート番号が既に使用されていた場合にエラーメッセージを出力するよう
修正しました。 (Yugo Nagata)
この問題は [pgpool-general: 1167] で Will Ferguson さんによって報告されました。
[pgpool-general: 1167] Re: Watchdog error - wd_init: delegate_IP already exists
From: Will Ferguson
Date: Tue, 6 Nov 2012 13:03:36 +0000
http://www.sraoss.jp/pipermail/pgpool-general/2012-November/001186.html
- コネクションプールが存在しない場合には、child_exit() が send_frontend_exits()
を呼ばないよう修正しました。 (Tatsuo Ishii)
send_frontend_exits() は pool_connection_pool で指されてるオブジェクトを参照
しているため、修正前にはセグメンテーションフォルトが発生していました。
バグトラック #44 の tuomas さんの報告によります。
#44 pgpool went haywire after slave shutdown triggering master failover
Reporter: tuomas
Date: 2012-12-11 00:33
http://www.pgpool.net/mantisbt/view.php?id=44
- オンメモリクエリキャッシュで、black_memqcache_table_list にテーブルが指定
されている場合に white_memqcache_table_list に指定されたテーブルのみが
キャッシュされていたバグを修正しました。
(Yugo Nagata)
- pool_read() が不正なパケットを読み込んだ場合に、read_startup_packet() が
アラームクロックをリセットして StartupPacket を解放するよう修正しました。
(Nozomi Anzai)
修正前は、pgpool ポートの監視を行うプログラムの接続により、認証のタイムアウト
が発生していました。
この問題は、バグトラック #35 で tuomas さんにより報告されました。
#35 Authentication is timeout
Reporter: tuomas
Date: 2012-11-20 11:54
http://www.pgpool.net/mantisbt/view.php?id=35
- pool_open() が誤ったバッファポインタを初期化していたバグを修正しました。
(Tatsuo Ishii)
このポインタは事前に memset() によって初期化されているため、実際にはこのバグ
による害はありませんでした。
- fail_over_on_backend_error が無効のためファイルオーバが行われなかった場合には、
ログメッセージを出力するようにしました。 (Tatsuo Ishii)
- LISTEN/NOTIFY の処理に関するバグを修正しました。 (Tatsuo Ishii)
1) ストリームレプリケーションモードにおいて以下の状況でハングアップが起きて
いました。
Session 1: LISTEN aaa;
Session 2: NOTIFY aaa;
Session 1: LISTEN aaa; --- ハング
(LISTEN と NOTIFY が同じセッションで発行された場合には問題ありませんでした。)
pgpool では、パケットは全てのバックエンドから送られてくることを前提にして
いました。しかし、ストリーミングレプリケーションモードでは notifiction
メッセージはプライマリノードからしか送られて来ません。このハングは、スタンバイ
ノードからのパケット読込を回避することで修正しました。
2) この修正後も、ストリーミングレプリケーションモードでプライマリノードが
0 番ノードの場合には、#1 と同様のハングが発生していました。これは、
MASTER_NODE_ID マクロが常に REAL_MASTER_NODE_ID を返していたためです。
master/slave モードでは、これが PRIMARY_NODE_ID を返すように修正しました。
3) レプリケーションモードでは LISTEN/NOTIFY は全く動作していませんでした。
このモードでは NOTIFY は全てのバックエンドに送られます。しかし、その応答
の順番はマスターが最初で、次がスレーブとは限りません。最初にスレーブから
応答した場合には、単にそれを破棄するのではなく、マスターから読込を行うように
pool_process_query() を修正しました。
4) レプリケーションモードで、LISTENとNOTIFYが同じセッションから発行された
場合、db_command() が 'N', 'E', 'S', 'C' 以外のパケットを受信するために、
そのセッションは切断されていました。これは、'A'パケットをスタックに入れておき、
都合の良いときに取り出すことで解決しました。そのための関数、pool_push(),
pool_pop(), pool_stacklen() が追加されています。
このバグはバグトラック #45 で rpashin さんにより報告されました。
#45 LISTEN/NOTIFY doesn't work if cluster contains more then 1 node in
streaming replication mode
Reporter: rpashin
Date: 2012-12-12 00:09
http://www.pgpool.net/mantisbt/view.php?id=45
修正のサイズが大きいため、この修正は 3.1 以前にはバックパッチされません。
(これまでのところ、3.1 以前でこの障害の報告はありません。)
- connect(2) が EINPREGESS または EALREADY エラーを返したときには、
connect_inet_domain_socket_by_port() は エラーを出力せずに、select(2) を
実行するよう修正しました。 (Tatsuo Ishii)
ノンブロッキングソケットでは、"Connection timed out" エラーにもかかわらず、
実際には接続は確立されています。これを解決するためには、connect(2) が
EINPROGRESS または EALREADY を返した場合には、再試行ループではなく select(2)
を使って接続を待つ必要があります。
この問題は、バグトラック #46 で mcousin さんにより報告されました。
#46 Watchdog failing to connect sometimes
Reporter: mcousin
Date: 2012-12-15 01:01
http://www.pgpool.net/mantisbt/view.php?id=46
- watchdog 使用時は num_init_children を大きめに設定するよう、マニュアルに
注意書きを追記しました。 (Tatsuo Ishii)
詳しくは[pgpool-general: 1330] をご覧ください。
[pgpool-general: 1330] WatchDog and pgool sudden stop working
From: Tomas Halgas
Date: Fri, 18 Jan 2013 14:47:23 +0100
http://www.sraoss.jp/pipermail/pgpool-general/2013-January/001350.html
- watchdog を有効にしたときに、 pgpool-II の起動時、ファイルオーバ時に発生する
セグメンテーションフォルトを修正しました。 (Yugo Nagata)
このバグの原因は pthread_detach と pthread_join を併用するという pthread
の誤使用でした。スレッドのステータス取得のため、pthread_join のみを用いる
ことで修正しました。なお、この問題は Fedora 17 などの比較的最近のOSで発生
しましたが、幸運にも他の OS では観察されていませんでした。
この問題は [pgpool-general: 1179] にて、Lonni J Friedman さんによって報告
されました。
[pgpool-general: 1179] 3.2.1 segfaults at startup on Fedora17.
From: Lonni J Friedman
Date: Mon, 12 Nov 2012 15:58:29 -0800
http://www.sraoss.jp/pipermail/pgpool-general/2012-November/001198.html
修正パッチはバグトラック #48 にて、chads さんによって提供頂きました。
pthread_detach is being used wrong; causes pgpool to segfault.
Reporter: chads
Date: 2013-01-16 05:44
http://www.pgpool.net/mantisbt/view.php?id=48
- [pgpool-general: 1046] で報告されたスプリットブレインが発生しないよう修正
しました。(Yugo Nagata)
全てのバックエンドから切り離された pgpool-II にバックエンドを復帰させた時に、
複数のアクティブ pgpool が存在してしまう状況(スプリットブレイン)が発生して
いました。修正後は、一度全てのバックエンドから切り離された pgpool-II は、
再起動されない限り、ダウン状態に留まります。ダウン状態の pgpool-II はアクティブ
になれないため、上述のスプリットブレインは回避されます。
[pgpool-general: 1046]
watchdog enabled delegate_IP on multiple nodes simultaneously
From: Lonni J Friedman
Date: Wed, 26 Sep 2012 09:05:09 -0700
http://www.sraoss.jp/pipermail/pgpool-general/2012-September/001064.html
- アクティブ pgpool の終了時にハングすることがあったのを修正しました。
(Yugo Nagata)
アクティブ pgpool は終了時に仮想 IP を停止してパケットを他の pgpool に送ります。
しかし、仮想 IP が完全に停止する前にパケットが送信されることがありました。
その場合、パケットの送信元には仮想 IP がセットされるため、仮想IPの停止後は
アクティブ pgpool はパケットの応答を受け取れなくなり、ハングしていました。
修正後は、アクティブ pgpool は仮想 IP の停止を確認した後に、パケットを送信します。
- マニュアルの「watchdogの制限事項」の項目を加筆・修正しました。 (Yugo Nagata)
- pgpool.conf.sample* およびドキュメント中の、「パラメータ変更に再起動が必要か
どうか」の情報を追記・修正しました。 (Yugo Nagata)
- pool_passwd に関する記述を pgpool_conf.sample*、 ドキュメント、 および
pool_process_reporting.c に追加しました。 (Yugo Nagata)
修正前は、SHOW pool_status, pcp_pool_status の出力に pool_passwd が含まれて
いませんでした。
===========================================================================
pgpool-II 3.1.6
===========================================================================
- md5 認証で競合が発生する不具合が修正されました。(Tatsuo Ishii)
pool_passwd のファイル識別子は pgpool の親プロセスで開かれたものが子プロセス
に引き継がれてます。複数の接続で同時に md5 認証を行う際には、pool_get_passwd
が呼ばれ、ファイル識別子が走査されますが、ファイル識別子が共有されるために
md5 認証が失敗することがありました。この問題は、個々の子プロセスで pool_passwd
ファイルを開き直すことで解決されました。
この問題は [pgpool-general:1141] にて、Jason Slagle さんによって報告・解析
されました。
[pgpool-general: 1141] Possible race condition in pool_get_passwd
From: Jason Slagle
Date: Sun, 28 Oct 2012 01:12:52 -0400
http://www.sraoss.jp/pipermail/pgpool-general/2012-October/001160.html
- pcp_attach_node, pcp_detach_node を繰り返し実行したときに起こるハングアップ
を修正しました。 (Tatsuo Ishii)
pcp_attach_node, pap_detach_node によりノードステータスが変更された時、
failover() は子プロセスに SIGUSR1 シグナルを送り、プロセスの終了とノード
ステータスの更新を行います。その時に発せられた SIGCHLD シグナルは全て
reaper() ハンドラで受信しますが、システムの負荷とタイミングによりこれが失敗する
ことがありました。pcp プロセスによる SIGCHLD シグナルの受信に失敗した場合に、
これがゾンビプロセスとなり、pcp プロセスが永遠に再起動されなくなっていました。
この問題はバグトラック #32 (oleg_myrk さんによる)他で報告されました。
#32 PGPool hangs on pcp_attach/detach
Reporter: oleg_myrk
Date: 2012-10-24 00:01
http://www.pgpool.net/mantisbt/view.php?id=32
- pool_send_severity_message() で未初期化のメモリを使用しないよう修正しました。
(Tatsuo Ishii)
このバグによりセグメンテーション違反が発生することがありました。
バグトラック #33 に投稿された valgrind 実行結果(dudee さんによる)にて
報告されました。
#33 pgpool-II 3.2.1 segfault
Reporter: dudee
Date: 2012-10-30 19:16
http://www.pgpool.net/mantisbt/view.php?id=33
- ヘルプメッセージに -f オプションの説明を追加しました。 (Tatsuo Ishii)
- pcp または worker 子プロセスの終了イベントを受信したときに、reaper() で
wait3() ループを終了しないように修正しました。 (Tatsuo Ishii)
修正前は、reaper() は子プロセスの終了イベントを誤って無視してしまい、ゾンビ
プロセスを作り、新しいプロセスを生成できないことがありました。
この問題は[pgpool-general-jp: 1123]にて、後藤さんより報告され、修正の示唆を
頂きました。
[pgpool-general-jp: 1123] Re: オンラインリカバリ後にゾンビプロセスになる
From: GOTO, Daisuke
Date: Wed, 21 Nov 2012 19:56:17 +0900
http://www.sraoss.jp/pipermail/pgpool-general-jp/2012-November/001122.html
- pool_search_relcache() が REAL_MASTER_NODE_ID ではなく MASTER, MASTER_NODE_ID
を使用するように修正しました。 (Tatsuo Ishii)
ストリーミングレプリケーションモードで 0 番ノードがフェールバックした場合、
pgpool は子プロセスを再起動しません。そのとき、REAL_MASTER_NODE_ID は 0 番
ノードの接続情報を探しにいきますが、これはバックエンドへの新しい接続が確立する
まで存在しません。そのため、接続情報の参照によって、セグメンテーションフォルト
が発生していました。この状況でも、MASTER または MASTER_NODE_ID は以前に
キャッシュされたマスターノード ID を見にいくため、安全に使うことが出来ます。
- ストリーミングレプリケーションモードでレプリケーション遅延が大きくなったときに、
"portal not found" エラーが発生するバグを修正しました。 (Tatsuo Ishii)
これは delay_threshold が導入以来、ずっと存在していたバグです。
bind, describe, execute の実行時に遅延が域値を越えた場合、送り先の DB ノードは
変更されていました。しかし、parse がそれとは異なるノードに送られていた場合、
送り先ノードには parse された ステートメントやポータルが存在しないために bind,
describe, execute は失敗していました。 修正後は、大きな遅延が発生した場合でも、
これらは parse が実行されたノード以外には送られないようになりました。
- pg_md5 で、ユーザからのパスワード入力の後には改行するように修正しました。
(Yugo Nagata)
- コネクションプールが存在しない場合には、child_exit() が send_frontend_exits()
を呼ばないよう修正しました。 (Tatsuo Ishii)
send_frontend_exits() は pool_connection_pool で指されてるオブジェクトを参照
しているため、修正前にはセグメンテーションフォルトが発生していました。
バグトラック #44 の tuomas さんの報告によります。
#44 pgpool went haywire after slave shutdown triggering master failover
Reporter: tuomas
Date: 2012-12-11 00:33
http://www.pgpool.net/mantisbt/view.php?id=44
- pool_read() が不正なパケットを読み込んだ場合に、read_startup_packet() が
アラームクロックをリセットして StartupPacket を解放するよう修正しました。
(Nozomi Anzai)
修正前は、pgpool ポートの監視を行うプログラムの接続により、認証のタイムアウト
が発生していました。
この問題は、バグトラック #35 で tuomas さんにより報告されました。
#35 Authentication is timeout
Reporter: tuomas
Date: 2012-11-20 11:54
http://www.pgpool.net/mantisbt/view.php?id=35
- pool_open() が誤ったバッファポインタを初期化していたバグを修正しました。
(Tatsuo Ishii)
このポインタは事前に memset() によって初期化されているため、実際にはこのバグ
による害はありませんでした。
- ドキュメント中の、「パラメータ変更に再起動が必要かどうか」の情報を追記・修正
しました。(Yugo Nagata)
- pool_passwd に関する記述を pgpool_conf.sample*、 および、ドキュメントに追加
しました。 (Yugo Nagata)
===========================================================================
pgpool-II 3.0.10
===========================================================================
- md5 認証で競合が発生する不具合が修正されました。(Tatsuo Ishii)
pool_passwd のファイル識別子は pgpool の親プロセスで開かれたものが子プロセス
に引き継がれてます。複数の接続で同時に md5 認証を行う際には、pool_get_passwd
が呼ばれ、ファイル識別子が走査されますが、ファイル識別子が共有されるために
md5 認証が失敗することがありました。この問題は、個々の子プロセスで pool_passwd
ファイルを開き直すことで解決されました。
この問題は [pgpool-general:1141] にて、Jason Slagle さんによって報告・解析
されました。
[pgpool-general: 1141] Possible race condition in pool_get_passwd
From: Jason Slagle
Date: Sun, 28 Oct 2012 01:12:52 -0400
http://www.sraoss.jp/pipermail/pgpool-general/2012-October/001160.html
- pool_send_severity_message() で未初期化のメモリを使用しないよう修正しました。
(Tatsuo Ishii)
このバグによりセグメンテーション違反が発生することがありました。
バグトラック #33 に投稿された valgrind 実行結果(dudee さんによる)にて
報告されました。
#33 pgpool-II 3.2.1 segfault
Reporter: dudee
Date: 2012-10-30 19:16
http://www.pgpool.net/mantisbt/view.php?id=33
- pcp または worker 子プロセスの終了イベントを受信したときに、reaper() で
wait3() ループを終了しないように修正しました。 (Tatsuo Ishii)
修正前は、reaper() は子プロセスの終了イベントを誤って無視してしまい、ゾンビ
プロセスを作り、新しいプロセスを生成できないことがありました。
この問題は[pgpool-general-jp: 1123]にて、後藤さんより報告され、修正の示唆を
頂きました。
[pgpool-general-jp: 1123] Re: オンラインリカバリ後にゾンビプロセスになる
From: GOTO, Daisuke
Date: Wed, 21 Nov 2012 19:56:17 +0900
http://www.sraoss.jp/pipermail/pgpool-general-jp/2012-November/001122.html
- pool_search_relcache() が REAL_MASTER_NODE_ID ではなく MASTER, MASTER_NODE_ID
を使用するように修正しました。 (Tatsuo Ishii)
ストリーミングレプリケーションモードで 0 番ノードがフェールバックした場合、
pgpool は子プロセスを再起動しません。そのとき、REAL_MASTER_NODE_ID は 0 番
ノードの接続情報を探しにいきますが、これはバックエンドへの新しい接続が確立する
まで存在しません。そのため、接続情報の参照によって、セグメンテーションフォルト
が発生していました。この状況でも、MASTER または MASTER_NODE_ID は以前に
キャッシュされたマスターノード ID を見にいくため、安全に使うことが出来ます。
- ストリーミングレプリケーションモードでレプリケーション遅延が大きくなったときに、
"portal not found" エラーが発生するバグを修正しました。 (Tatsuo Ishii)
これは delay_threshold が導入以来、ずっと存在していたバグです。
bind, describe, execute の実行時に遅延が域値を越えた場合、送り先の DB ノードは
変更されていました。しかし、parse がそれとは異なるノードに送られていた場合、
送り先ノードには parse された ステートメントやポータルが存在しないために bind,
describe, execute は失敗していました。 修正後は、大きな遅延が発生した場合でも、
これらは parse が実行されたノード以外には送られないようになりました。
- pg_md5 で、ユーザからのパスワード入力の後には改行するように修正しました。
(Yugo Nagata)
- コネクションプールが存在しない場合には、child_exit() が send_frontend_exits()
を呼ばないよう修正しました。 (Tatsuo Ishii
send_frontend_exits() は pool_connection_pool で指されてるオブジェクトを参照
しているため、修正前にはセグメンテーションフォルトが発生していました。
バグトラック #44 の tuomas さんの報告によります。
#44 pgpool went haywire after slave shutdown triggering master failover
Reporter: tuomas
Date: 2012-12-11 00:33
http://www.pgpool.net/mantisbt/view.php?id=44
- pool_read() が不正なパケットを読み込んだ場合に、read_startup_packet() が
アラームクロックをリセットして StartupPacket を解放するよう修正しました。
(Nozomi Anzai)
修正前は、pgpool ポートの監視を行うプログラムの接続により、認証のタイムアウト
が発生していました。
この問題は、バグトラック #35 で tuomas さんにより報告されました。
#35 Authentication is timeout
Reporter: tuomas
Date: 2012-11-20 11:54
http://www.pgpool.net/mantisbt/view.php?id=35
- pool_open() が誤ったバッファポインタを初期化していたバグを修正しました。
(Tatsuo Ishii)
このポインタは事前に memset() によって初期化されているため、実際にはこのバグ
による害はありませんでした。
- ヘルプメッセージに -f オプションの説明を追加しました。 (Tatsuo Ishii)
- ドキュメント中の、「パラメータ変更に再起動が必要かどうか」の情報を追記・修正
しました。(Yugo Nagata)
- pool_passwd に関する記述を pgpool_conf.sample*、 および、ドキュメントに追加
しました。 (Yugo Nagata)
===========================================================================
pgpoolAdmin 3.2.2
===========================================================================
- health_check_password パラメータの typo を修正しました。 (Nozomi Anzai)
- delay_threshold の型を bool から integer に修正しました。(Nozomi Anzai)
- pool_passwd パラメータを追加しました。(Yugo Nagata)
--
Yugo Nagata <nagata @ sraoss.co.jp>
pgpool-general-jp メーリングリストの案内