[pgsql-jp: 33703] Re: pgpool の接続が増え続けます

芋野一男 imonomail @ nbsystem.co.jp
2004年 7月 19日 (月) 20:14:31 JST


お手数をおかけしました。
早速ためしてみます。
また結果、ご報告いたします。


----- Original Message ----- 
From: "Tatsuo Ishii" <t-ishii @ sra.co.jp>
To: <pgsql-jp @ ml.postgresql.jp>
Sent: Monday, July 19, 2004 4:30 PM
Subject: [pgsql-jp: 33702] Re: pgpool の接続が増え続けます


> 石井です.
>
> > 芋野です。
> > pgpool 2.0.4 でやってみましたがやはり num_init_children を超えたところ
で
> > 応答が帰ってきません。 -d -n でやってみると pgpool 側でも何の応答も
> > ないようです。これは CSE でも、自作のアプリでも同じ反応でした。
> > 言い忘れましたが自作アプリは libpq.dll 経由でアクセスする、Takesou さん
> > 作の PQコンポという Delphi 用コンポーネントを C++Builder で使って作って
> > おります。
>
> 実際にCSEと片岡さんが配布しているlibpq.dllを取ってきて調べてみました.
>
> その結果,片岡さんのlibpq.dllはPostgreSQL 6.5ベースであり,libpqの6.5
> の実装にはバグがあることがわかりました.本来コネクションを切断するメッ
> セージはversion 2プロトコルでは1バイトの'X'という文字でなければならな
> いのですが,6.5のlibpqでは,'X'に加えて'\n'を送信してしまっています.
> その結果pgpoolが混乱して無限ループに入り,コネクションを解放できなくなっ
> ていたのです.
>
> 6.5のlibpqのバグは,少なくとも7.3では直っているようです.
> # pgpoolのREADMEでは,version 2プロトコルは7.0以降で採用,となっていま
> # したが,これは間違いで,version 2は6.4から7.3.xで使われています.
>
> ただ,こうしたフロントエンド側のバグにもpgpoolは備える必要があると思う
> ので,とりあえず添付のようなパッチを作ってみました.私の手元のWindows
> XP(VMWareで動いています)ではうまく行っているように見えます.よかったら
> お試し下さい.
>
> ただし,毎回
>
> ERROR: pid 16228: ProcessFrontendResponse: unknown message type
>
> というエラーが出てしまいますが,これは前述の6.5のバグのせいなのでやむ
> を得ません.
>
> ちなみに,pgpoolは本日2.0.5をリリースしたばかりで,パッチは2.0.5に対す
> るものとなっているので,それ以前のものではうまくあたらないかもしれませ
> んが,1行だけの修正なので手で直すことも可能だと思います.
> --
> Tatsuo Ishii
>
> -------------------------- cut here ---------------------------
> diff -c -r1.27 pool_process_query.c
> *** pool_process_query.c 19 Jul 2004 01:23:58 -0000 1.27
> --- pool_process_query.c 19 Jul 2004 07:25:53 -0000
> ***************
> *** 1294,1300 ****
>   char fkind;
>   POOL_STATUS status;
>
> ! if (frontend->no_forward != 0)
>   return POOL_CONTINUE;
>
>   if (pool_read(frontend, &fkind, 1) < 0)
> --- 1294,1300 ----
>   char fkind;
>   POOL_STATUS status;
>
> ! if (frontend->len <= 0 && frontend->no_forward != 0)
>   return POOL_CONTINUE;
>
>   if (pool_read(frontend, &fkind, 1) < 0)
>




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