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

Kazuki Uehara uehara.kazuki @ lab.ntt.co.jp
2015年 2月 4日 (水) 12:11:16 JST


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 メーリングリストの案内