[pgpool-general-jp: 1352] Re: pgpool-II_3.4.0の仕様について

Tatsuo Ishii ishii @ sraoss.co.jp
2015年 2月 4日 (水) 12:51:03 JST


上原様

お世話になっています。石井です。

こちらこそご連絡が遅くなり申し訳ありません。
今後共ご指導のほどをお願いいたします。
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese:http://www.sraoss.co.jp

> To:石井様
> 
> 上原です。
> お世話になっております。
> 
> 
> すみません。gitの情報を見れていませんでした。
> ご確認いただきありがとうございます。
> 
> 
> 
> 以上です。
> よろしくお願いします。
> 
> 
> (2015/02/03 19:17), Tatsuo Ishii wrote:
>> 上原様
>> 
>> 石井です。
>> 
>>> To:石井様
>>>
>>> 上原です。
>>> お世話になっております。
>>>
>>>
>>> 先日、質問させていただきました以下の内容についてですが、
>>> いかがでしょうか。
>>>
>>> pgpoool-IIの仕様について、ご回答いただければ幸いです。
>>>
>>>> pgpool-II 3.4.0の仕様についていくつか不明な点があります。
>>>> 下記の内容について、ご教授いただけないでしょうか。
>>>>
>>>> ■1 ドキュメントバグ?
>>>> client_min_messagesの選択範囲にFATAL、PANICがマニュアルに記載されて
>>>> いますが、設定できません。(設定した場合、エラーになります)
>>>> ソースを確認した限り、FATAL、PANICは対象にしていないのですが、
>>>> ドキュメントとソースのどちらが仕様として正しいのでしょうか。
>> 
>> こちらはドキュメントのバグでした。すでにgit上では修正されています。
>> 
>> http://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=e456a3259928efd84d0e4bf74197df08d8b9ee23
>> 
>> 今週リリースされる3.4.1に入る予定です。
>> 
>>>> ■2 client_min_messagesが制御するメッセージは何か?
>>>> PostgreSQLからClientに返されるメッセージを制御するものとして考えて
>>>> いましたが、設定を変更しても出力内容に変化がありません。
>>>>
>>>> ソースを確認したところ、そもそも制御が行われていないように見えますが
>>>> いかがでしょうか。whereToSendOutputは初期値'DestDebug'のままで変更
>>>> されることがないため、下記の処理が行われていないという認識ですが、
>>>> 合っているでしょうか。
>> 
>> こちらも同じコミットで直っていますが、client_min_messagesはpgpool-IIか
>> らフロントエンドに送られるメッセージのレベルを制御するはずのものです。
>> (今まではバグで送られてなかった)
>> 
>> こんな感じです(client_min_messages = debug1の場合)。
>> 
>> t-ishii @ tishii-CF-SX3HE4BP: psql -p 11000 test
>> DEBUG:  selecting load balance node
>> DETAIL:  selected backend id is 0
>> DEBUG:  initializing session context
>> DETAIL:  selected load balancing node: 0
>> DEBUG:  session context: clearing transaction isolation. DONE
>> DEBUG:  session context: clearing writing transaction. DONE
>> DEBUG:  session context: clearing failed transaction. DONE
>> DEBUG:  session context: clearing failed transaction. DONE
>> DEBUG:  session context: clearing skip reading from backends. DONE
>> DEBUG:  session context: clearing ignore till sync. DONE
>> DEBUG:  reading backend data packet kind
>> DETAIL:  backend:0 of 2 kind = 'Z'
>> DEBUG:  reading backend data packet kind
>> DETAIL:  backend:1 of 2 kind = 'Z'
>> DEBUG:  processing backend response
>> DETAIL:  received kind 'Z'(5a) from backend
>> DEBUG:  processing backend response
>> DETAIL:  Ready For Query received
>> DEBUG:  reading message length
>> DETAIL:  slot: 0 length: 5
>> DEBUG:  reading message length
>> DETAIL:  slot: 1 length: 5
>> DEBUG:  processing ReadyForQuery
>> DETAIL:  transaction state '
>> DEBUG:  processing ReadyForQuery
>> DETAIL:  transaction state 'I'(49)
>> Pager usage is off.
>> psql (9.4.0)
>> Type "help" for help.
>> 
>> 
>>>> src/utils/error/elog.c
>>>> 285         /* Determine whether message is enabled for client output */
>>>> 286         if (whereToSendOutput == DestRemote&&  elevel != COMMERROR)
>>>> 287         {
>>>> 288                 /*
>>>> 289                  * client_min_messages is honored only after we complete the
>>>> 290                  * authentication handshake.  This is required both for security
>>>> 291                  * reasons and because many clients can't handle NOTICE messages
>>>> 292                  * during authentication.
>>>> 293                  */
>>>> 294         output_to_client = (elevel>= pool_config->client_min_messages ||
>>>> 295                                                                 elevel == INFO);
>>>> 296         }
>>>
>>>
>>> 以上です。
>>> よろしくお願いします。
>>>
>>>
>>> (2015/01/13 11:09), Kazuki Uehara wrote:
>>>> To:石井様
>>>>
>>>> 上原です。
>>>> お世話になっております。
>>>>
>>>>
>>>>> [1]に対しては、atolで変換前に数字かどうか確認し、数字でない場合はエラー
>>>>> としてpgpool-IIが起動しないようにしました(他の設定項目同様、設定エラー扱い)。
>>>>>
>>>>> [2]に対しては、そもそも空の正規表現を受け付けること自体が間違っているの
>>>>> で、[1]同様設定エラー、pgpool-IIが起動しないようにしました。
>>>>
>>>> ご確認、及びご対応いただきありがとうございます。
>>>>
>>>>
>>>> 以上です。
>>>> よろしくお願いします。
>>>>
>>>> (2015/01/11 10:21), Tatsuo Ishii wrote:
>>>>> 上原様
>>>>>
>>>>> お世話になっています。石井です。
>>>>>
>>>>>> 石井さま
>>>>>>
>>>>>> 上原です。
>>>>>> お世話になっております。
>>>>>>
>>>>>> ご確認いただきありがとうございます。
>>>>>>
>>>>>>>> ■3 redirect_listの内容が不正な場合、ロードバランシングはされない?
>>>>>>
>>>>>> 申し訳ありません。
>>>>>> こちらの条件等の説明が不足しておりましたので、訂正させていただきます。
>>>>>>
>>>>>> お手数をお掛けして申し訳ありませんが、再度ご確認いただけないでしょうか。
>>>>>>
>>>>>> 以下の2パターンでのロードバランシングの挙動を確認した結果は
>>>>>> 仕様どおりのものかご確認いただけると幸いです。
>>>>>
>>>>> 確認しました。
>>>>>
>>>>>> パターン1 database_redirect_preference_list = 'testdb1:abcd&testdb2:1'
>>>>>
>>>>> "testdb1"というDBに対し、"abcd&testdb2:1"というDBノード番号にリダイレク
>>>>> トせよ、という設定と解釈されているようです。
>>>>>
>>>>>> 結果:testdb1へのSQLは全てプライマリで実行される。
>>>>>>    testdb2へのSQLはロードバランシングされる。
>>>>>
>>>>> pgpool-IIでは文字列からDBノード番号に変換するのにatolを使っているため、
>>>>> "abcd&testdb2:1"が0に変換され、testdb1に対する負荷分散がすべてプライマ
>>>>> リ(というかノード0)になってしまったようです[1]。
>>>>>
>>>>>> パターン2 database_redirect_preference_list = ':0,testdb2:1'
>>>>>> 結果:testdb1へのSQLは全てプライマリで実行される。
>>>>>>    testdb2へのSQLは全てプライマリで実行される。
>>>>>
>>>>> ""を正規表現としてコンパイルする際に、"^"に変換しており(これ自体はバグ。
>>>>> 本当は"^$"に変換したかった)、結果すべてのデータベース名にマッチする正規
>>>>> 表現になってしまい、どんなDBに対する負荷分散でもすべてプライマリ(という
>>>>> かノード0)になってしまったようです[2]。
>>>>>
>>>>> [1]に対しては、atolで変換前に数字かどうか確認し、数字でない場合はエラー
>>>>> としてpgpool-IIが起動しないようにしました(他の設定項目同様、設定エラー扱い)。
>>>>>
>>>>> [2]に対しては、そもそも空の正規表現を受け付けること自体が間違っているの
>>>>> で、[1]同様設定エラー、pgpool-IIが起動しないようにしました。
>>>>> --
>>>>> Tatsuo Ishii
>>>>> SRA OSS, Inc. Japan
>>>>> English: http://www.sraoss.co.jp/index_en.php
>>>>> Japanese:http://www.sraoss.co.jp
>>>>
>>>>
>>>
>>>
>>> -- 
>>> 上原 一樹 (Kazuki Uehara)
>>> Mail : uehara.kazuki @ lab.ntt.co.jp
>>> Phone: 03-5860-5115
>>>
>>> _______________________________________________
>>> pgpool-general-jp mailing list
>>> pgpool-general-jp @ sraoss.jp
>>> http://www.sraoss.jp/mailman/listinfo/pgpool-general-jp
> 
> 
> -- 
> 上原 一樹 (Kazuki Uehara)
> Mail : uehara.kazuki @ lab.ntt.co.jp
> Phone: 03-5860-5115
> 
> _______________________________________________
> pgpool-general-jp mailing list
> pgpool-general-jp @ sraoss.jp
> http://www.sraoss.jp/mailman/listinfo/pgpool-general-jp


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