[pgpool-general-jp: 241] [報告]pgpool3.2+JDBC環境でのreplication_strictの挙動について

tutui-t @ sys.tosho.co.jp tutui-t @ sys.tosho.co.jp
2007年 8月 25日 (土) 11:59:08 JST


こんにちは、筒井です。
[pgpool-general-jp: 120]のデッドロックのような現象が発生する件で、
報告いたします。

[pgpool-general-jp: 162]で一度、
現象が確認されなくなったと申し上げましたが、
その後も再現したため、あらためて調べていました。
その結果、単体でupdate文を実行すると
自動でかかるROW EXCLUSIVEのロックが、
拡張問い合わせのParseメッセージの時点で獲得されているように
見えることが判りました。
pgsql-jpで質問したところ、
浅羽さんからソースの該当部分を教えていただきました。

こちらでは、トランザクション中で
SHARE ROW EXCLUSIVEのロックを獲得してupdateを実行する処理と、
トランザクション開始もロックも明示しない
単体のupdate処理を混在させています。
机上の検討ではreplication_strictを有効にしていれば
絡まないとしていたのですが、
Parse時点でロックが獲得されているとすると、
Parseはreplication_strictの順序制御の対象外なので(ですよね?)
絡んでしまいますね。
更新系クエリは暗黙のロックに任せず、
すべてトランザクションとLOCKを明示することで対応しようかと思います。


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