[pgpool-general-jp: 633] 今後のリリース予定および2.1での不具合について

skond66 @ mail.goo.ne.jp skond66 @ mail.goo.ne.jp
2009年 11月 13日 (金) 16:27:18 JST



いつもお世話になっております。
現在 pgpool 2.1を使用させて頂いております。先日から2.2.5へのアップデートを準備して
いるのですが、近いうちに2.2.6などがリリースされるようでしたら、もうしばらく待とうと
思っております。2.2.5の既存の不具合や2.2.6についての情報があれば教えてください。


また、2.1から2.2.5に変更しようと考えたきっかけは、下記のパターンでDBが片方しか更新
されないトラブルが発生したためです。おそらく2.2〜2.2.2で修正された下記の内容だろうと
思っておりますが、もし違うケースであれば、またご検討ください。

---
2.2.2
フロントエンドにpgpoolがデータを送信する際のエラーを無視するようにしました。これに
よって、バックエンドとの間で必要な処理が中断されないようになり、バックエンドの間で
データの一貫性がなくなる問題が回避されるようになりました(Tatsuo)。 
-----
2.2
クエリのキャンセルが動くようになりました(Tatsuo) 
-----


・トラブル発生について

環境
pgpool-II 2.1    postgreSQL 8.1系  CENTOS 4。
DBは2台でレプリケーションモードでロードバランスを使用しています。


再現手順
(ロックを利用しているのは、非常に長い時間のかかるSQLの再現が困難なためです。)

(1)term1 からpsql にて、pgpool経由で テーブルAにロック IN ACCESS EXCLUSIVE MODE
(2)term2 から同様にして、テーブルAを selectなどで参照を試みます。(wait になります)
(3)term2にてctr-cでキャンセルを試みます。応答がなくなります。うまくキャンセルできる
   場合もありますが、beginしてからselect するとたいてい応答しません。
(4)term2を強制終了します。
(5)DBのstatement_timeout を待ちます。私の環境では30分以上です。

timeoutすると、DBの片方に「unexpected EOF on client connection」、もう片方に「canceling st
atement due to statement timeout」が発生します。
前者のDBで、postgresql の接続プロセスが1つ減ります。後者は残ったままです。

この状態でpgpool-IIを使用すると、子プロセスの1つが片方のDBにしか接続していない状態と
なります。先日のトラブルでは、30回に1回ほどデータが片方にしか書き込まれない状態と
なり、徐々にデータがずれていきました。
また、この際、show pool_statusでは、正常状態が返ってきていました。

この異常な子プロセスがDBに書いた際に、ERROR:  syntax error at or near "send" at
 character 1 がDBに記録されていました。



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