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