[pgpool-general-jp: 430] Re: pgpool 3.4.1のdo_error_commandについて
Kenichi Sawada
k @ sawada.cc
2008年 4月 14日 (月) 14:35:08 JST
浅羽様:
澤田です。本件間が空いてしまいすみません。
また、ご意見ありがとうございます。
> Sync は以下のケースの場合に両方に投げる必要があります。
>
> 1. Execute("BEGIN")
> 2. Execute("SELECT ...") <-- ここでエラー
> 3. Execute("...") <- アボートしているのでエラー
>
> ここで 2 を実行してエラーが発生し、Sync を送らずにさらに Execute を送
> ると、マスタからはエラーが返ってきますが、セカンダリからは何も結果を返
> してきません。
本件については、2. でエラーが返った際すぐにdo_error_commandが呼ばれるため、
セカンダリでもエラーとなり、ABORTになるのではないかと想定しておりますが、
いかがでしょうか?
どうぞ宜しくお願い致します。
--澤田 研一
--k @ sawada.cc
From: Yoshiyuki Asaba <y-asaba @ sraoss.co.jp>
Date: Wed, 19 Mar 2008 17:42:51 +0900 (JST)
> 浅羽です。
>
> From: Kenichi Sawada <k @ sawada.cc>
> Subject: [pgpool-general-jp: 422] pgpool 3.4.1のdo_error_commandについて
> Date: Wed, 19 Mar 2008 10:54:56 +0900 (JST)
>
> > 1. replicate_select = false
> > 2. トランザクション内にて、extended modeでMASTERにselectを投げ、errorが返る
> > 3. pgpoolのdo_error_commandにて、SECONDARY側にエラーとなるquery
> > "send invalid query from pgpool to abort transaction": 通常モード)が
> > 投げられる
>
> なるほど、ここで簡易問合せプロトコルでエラーを投げるので、
> セカンダリだけ ErrorResponse と ReadyForQuery が届くということですね。
> pgpool が ErrorResponse しか読みこまないために、処理していない
> ReadyForQuery と
>
> > 4. そのあとMASTERとSECONDARYにSyncが投げられる
>
> ここでも ReadyForQuery が来るというわけですね。
>
>
> > という状況のようです。そこで、拡張問い合わせの際にはSECONDARYにSyncを
> > 投げないようにするパッチを適用してみたところ、手元ではうまく動作している
> > ようですが、いかがなものでしょうか。ご意見頂ければ幸いです。
>
> Sync は以下のケースの場合に両方に投げる必要があります。
>
> 1. Execute("BEGIN")
> 2. Execute("SELECT ...") <-- ここでエラー
> 3. Execute("...") <- アボートしているのでエラー
>
> ここで 2 を実行してエラーが発生し、Sync を送らずにさらに Execute を送
> ると、マスタからはエラーが返ってきますが、セカンダリからは何も結果を返
> してきません。
>
> http://www.postgresql.jp/document/pg830doc/html/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY
>
> 拡張問い合わせメッセージの処理中にエラーが検出されると、バックエンド
> はErrorResponseを発行し、Syncが届くまでメッセージを読み、それを破棄
> します。
>
> したがって、Sync を両方に送る必要があります。上記のケースのように、
> 拡張問合せプロトコル内で pgpool が内部的に送るエラークエリを実行
> (do_error_command() 関数)したら、ReadyForQuery を一度読んであげる必要
> があります。
>
> --
> Yoshiyuki Asaba
> y-asaba @ sraoss.co.jp
> _______________________________________________
> pgpool-general-jp mailing list
> pgpool-general-jp @ sraoss.jp
> http://www.sraoss.jp/mailman/listinfo/pgpool-general-jp
>
pgpool-general-jp メーリングリストの案内