[pgsql-jp: 35919] Re: pgpoolの縮退運転について

永橋 文二 bunji @ iris.eonet.ne.jp
2005年 8月 31日 (水) 22:14:15 JST


永橋です。

バックエンドコネクションの生成においてサーバーダウンやスイッチ故障等により
connectが失敗するケース(タイムアウト)に縮退運転へ移行するのは問題ないのですが
タイムアウトとなるなまで時間がかかり(数分)縮退運転へスムーズに移行できない点が
問題と考えます。 (netstatではコネクションのステータスはSYN_SENTが継続)

そこでconnect_inet_domain_socket()でのソケットをNON_BLOCKとして
タイムアウト処理を組み込んでみました。

テストでは問題なく動作しています。

内容の確認をお願いします。

2.6.3との差分は量が多いので別途石井さんへお送りします。

>石井です.
>
>> 永橋です。
>> 
>> pgpoolの動作でタイミングにより縮退運転できない状況が発生しました。
>> 
>> 調査した結果 health_check(child.c)において不具合があることが分かりました。
>> 
>> セカンダリ バックエンドへのwrite失敗時 マスタのエラーとしてしまい
>> 縮退運転できない状況に陥ってしまいます。
>> 
>> 以下のように修正しております。正式版への反映お願いします -> 石井さん
>
>ありがとうございます.そのほか,エラー時にファイルディスクリプタを
>close()していないバグもあったので,修正しました.そのほか,もろもろの
>バグ修正を入れて,とりあえず
>
>http://www2b.biglobe.ne.jp/~caco/pgpool/tmp/pgpool-2.6.3.tar.gz
>
>として置きましたので,試してみていただけますでしょうか?
>
>OKであれば,commitの上,正式リリースとしたいと思います.なお,2.6.2か
>らの変更箇所は以下です(NEWSより).
>
>      o もしスイッチでない正しくない引数(たとえば pgpool -f
>	pgpool.conf foobar)が与えられると,pgpool自体の起動は行われな
>	いものの,勝手にpgpool.pidが削除されてしまうバグを修正
>
>      o show pool_statusで,backend_portが明示的に指定されていない場合
>	にセカンダリサーバが"unused"ステータスになってしまうバグを修正
>
>      o health_check()で,セカンダリのエラーを誤ってマスタのエラーとして
>        いたバグを修正.永橋さんからのご指摘([pgsql-jp: 35914]参照)
>
>--
>Tatsuo Ishii



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