[pgcluster: 369] Re: WebLogicからのアクセス時にWARNINGが発生

渡邉 英樹 Hideki_Watanabe @ sunmoretec.co.jp
2004年 6月 17日 (木) 12:09:14 JST


NABEです。

島田様、三谷様
早速のご回答ありがとうございます。

> SELECT (負荷分散され特定のクラスタサーバにのみ送信される)
> その直後の commit が、たとえば無条件にレプリケーションされると
> 同じような現象が発生し、対策を講じた経験があります。

検索クエリはレプリケーションされないのに、commit文だけがレプリケーションされ
るわけですね。
このことと、

> レプリケーションサーバはcommitを受けるとトランザクションが終了だと認識し
> てトランザクションブロックを閉じます.その後でcommitを受けると
> > WARNING:  COMMIT: no transaction in progress
> が出るようになってしまいます.

に関してですが、
 ・レプリケーションはトランザクション単位で行われる。
 ・autocommit on の場合、1クエリ=1トランザクション で、検索クエリはレプリ
ケーションされないが
  更新クエリはレプリケーションされる。
 ・autocommit off の場合、commit〜次のcommit が1トランザクションとして扱わ
れる。
という認識で合っているでしょうか?
これだと
 ・autocommit off の場合、検索クエリと更新クエリが混在するトランザクション
単位で
  レプリケーションされてしまうから負荷分散はできない
というのは至極納得がいきます。
ただ、

> 要するにレプリケーションサーバがset autocommit off には1回しか対応して
> いないのが原因ですね.

というのが理解できていません。
「一度commitされてしまうと、それ以降は autocommit on になってしまう」という
ことでしょうか?
JDBCの場合、autocommitの設定はトランザクションに対してではなく、
コネクションに対して行うので、不思議な感じがするのですが・・・

また、
> WebLogicのことを全く知らないので,お尋ねするのですが,set autocommit off
> を止めることは出来ないのでしょうか.

に関してはまだ調査が及んでいないのですが、
少なくともWebLogicのEJBのデプロイ時はコンテナのトランザクション管理により
autocommit off を行うようなので、これはどうしようもなさそうですね。
ちなみに、JBossでは行っていないため、WebLogicのみの現象で間違いなさそうで
す。

> > コネクションを閉じた後にセッションを閉じるエラーが発生するのですが、
> > これはエラーレベルの記述ミスでしょうか?
> 確認してみます.

はい。よろしくお願いします。

*******************************************
 株式会社サンモアテック OSS部
 渡邉 英樹: Hideki_Watanabe @ sunmoretec.co.jp

 〒530-8204 
 大阪市北区堂島2丁目1番5号 サントリーアネックス7F
 TEL: 06-6344-6312 FAX: 06-6344-0639
  http://www.sunmoretec.co.jp/
*******************************************



pgcluster メーリングリストの案内