[pgpool-general-jp: 902] pgpool-II 3.0.3 トランザクション下でのselectが返ってこない

松山大樹 t.matsuyama @ wowcom.co.jp
2011年 3月 4日 (金) 17:31:26 JST


松山と申します。

postgresql9.0.3 + pgpool-II 3.0.3 で、既存のアプリケーション(java)
のテストをしているのですが、ちょっと奇妙な現象が出ていて原因がわからない
ので、質問させてください。
S2Dao を使用しています。

2つのDBをおいて、pgpool-II のレプリケーションモードで同期してます。
2つのDBは、同じサーバ(Linux)にポートを変えて配置されています。
pgpool-II も同じサーバです。

あるロジックの中で、いくつかのselect文を発行するメソッドがあるのですが、
このメソッドをトランザクション下で実行すると、2つめのselect文の後、
応答が返ってこなくなります。
正確には、結果は返ってきているのに、その先に進みません。

例) selectが1つの場合
public void registration() {
    FieldMaster field = fieldMasterDao.getFieldMaster(11);
    System.out.println("result1=" + field);
}
→ result1=xxxx は表示されますが、メソッドが完了しない。
  (commit待ち?)

例) selectが2つの場合
public void registration2() {
    FieldMaster field = fieldMasterDao.getFieldMaster(11);
    System.out.println("result1=" + field);

    FieldMaster field2 = fieldMasterDao.getFieldMaster(11);
    System.out.println("result2=" + field2);
}
→ result1=xxxx は表示されますが、2つめのselect文の結果が
返ってきません。

どちらも、メソッドの前後でトランザクション開始/終了(commit)
となります。

トランザクション下ではない場所で実行した場合は正常に終了します。
DB1、またはDB2 に直接接続した場合も正常に終了します。
select文を発行しないで、insertだけ実行した場合は、正常に終了し、
データも両方のDBに追加されています。

原因として、何が考えられるでしょうか?

pgpool.conf と、トランザクションありの場合、なしの場合のログを
添付します。





-------------- next part --------------
文字コード指定の無い添付文書を保管しました...
名前: pgpool.conf
URL:  http://www.sraoss.jp/pipermail/pgpool-general-jp/attachments/20110304/aacd70d8/attachment.pl 
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: log.zip
型:         application/x-zip-compressed
サイズ:     4860 バイト
説明:       無し
URL:        http://www.sraoss.jp/pipermail/pgpool-general-jp/attachments/20110304/aacd70d8/attachment.bin 


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