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

渡邉 英樹 Hideki_Watanabe @ sunmoretec.co.jp
2004年 6月 16日 (水) 20:35:50 JST


はじめまして。NABE と申します。
いつも拝見させて頂くばかりでしたが、今回初めて質問させていただきます。

環境は
レプリケーションサーバ1台
クラスタサーバ3台
ロードバランスサーバ1台
の計5台です。
(ただし、サーバの数が足らなかったため、クラスタサーバの内2台は
 一つのサーバ内で違うポート、データディレクトリを使用して起動しています)
また、使用しているPGClusterのバージョンは1.0.7RC2です。
(最新版を使いたかったのですがアップデートスピードについていけてません
(^^;;;)

JDBCからロードバランスサーバにクエリを投げた場合は
レプリケーション等の動作に問題は無かったのですが、
WebLogicでEJBをデプロイしたところ、クラスタサーバのログにWARNINGが出るように
なりました。
以下にデプロイ時のログの一部を記載します(下から3行目にWARNINGが発生)。

------------------------<デプロイ時のログ ここから>------------------------
DEBUG:  BackendStartup: forked pid=9425 socket=9
DEBUG:  /usr/local/pgsql/bin/postmaster child[9425]: starting with (
DEBUG:  	postgres
DEBUG:  	-v131072
DEBUG:  	-p
DEBUG:  	keihidb
DEBUG:  )
DEBUG:  InitPostgres
DEBUG:  StartTransactionCommand
LOG:  query: begin; select getdatabaseencoding(); commit
DEBUG:  ProcessUtility
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
DEBUG:  ProcessQuery
DEBUG:  ProcessUtility
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
LOG:  query: SELECT PGR_SYSTEM_COMMAND_FUNCTION(3,1087345739,433211) 
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
LOG:  query: set datestyle to 'ISO'
DEBUG:  ProcessUtility
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
LOG:  query: set client_encoding = 'UNICODE'
DEBUG:  ProcessUtility
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
LOG:  query: set autocommit = off
DEBUG:  ProcessUtility
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
LOG:  query: SELECT kjkmkrn, kjkmkc, kaisc, teymd, tsymd FROM kanjouMas
WHERE 1 = 0
DEBUG:  ProcessQuery
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
LOG:  query: SELECT 7 FROM kanjouMas WHERE (1=0) FOR UPDATE
DEBUG:  ProcessQuery
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
LOG:  query: commit
DEBUG:  ProcessUtility
DEBUG:  CommitTransactionCommand
DEBUG:  proc_exit(0)
DEBUG:  shmem_exit(0)
DEBUG:  BackendStartup: forked pid=9427 socket=9
DEBUG:  /usr/local/pgsql/bin/postmaster child[9427]: starting with (
DEBUG:  exit(0)
DEBUG:  	postgres
DEBUG:  reaping dead processes
DEBUG:  	-v131072
DEBUG:  child process (pid 9425) exited with exit code 0
DEBUG:  	-p
DEBUG:  	keihidb
DEBUG:  )
DEBUG:  InitPostgres
DEBUG:  StartTransactionCommand
LOG:  query: begin; select getdatabaseencoding(); commit
DEBUG:  ProcessUtility
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
DEBUG:  ProcessQuery
DEBUG:  ProcessUtility
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
LOG:  query: SELECT PGR_SYSTEM_COMMAND_FUNCTION(3,1087345746,634783) 
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
LOG:  query: SELECT jkkn_from, mwskz, trhymd, projk, kaisu, tcshzei, rsyno,
tekiyo, prctr, krymd, kaisc, dnps, hftanka, data_sbt, dnpk, jkkn_to, tanka,
ktukknc, nitotno, amt, hfkaisu, gsber, chic, kjkmkc, sykski, dnpms, prctrnm,
dnps FROM meisai WHERE 1 = 0
DEBUG:  ProcessQuery
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
LOG:  query: SELECT typname FROM pg_catalog.pg_type WHERE oid = 1700
DEBUG:  ProcessQuery
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
LOG:  query: SELECT 7 FROM meisai WHERE (1=0) FOR UPDATE
DEBUG:  ProcessQuery
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
LOG:  query: commit
DEBUG:  ProcessUtility
WARNING:  COMMIT: no transaction in progress
DEBUG:  CommitTransactionCommand
DEBUG:  proc_exit(0)
------------------------<デプロイ時のログ ここまで>------------------------


これ以降、EJBでデータの挿入や削除を行うたびにWARNINGが出るようになります。
以下にEJBからのデータ削除時のログの一部を記載します(下から3行目にWARNINGが発
生)。

------------------------<EJBログ ここから>------------------------
DEBUG:  ProcessQuery
DEBUG:  reaping dead processes
DEBUG:  StartTransactionCommand
DEBUG:  CommitTransactionCommand
DEBUG:  child process (pid 25358) exited with exit code 0
LOG:  query: SELECT WL0.ktukknc, WL0.kaisc, WL0.ktukkn, WL0.rsyyk,
WL0.teymd, WL0.tsymd  FROM transportMas WL0 
DEBUG:  ProcessQuery
DEBUG:  StartTransactionCommand
DEBUG:  CommitTransactionCommand
DEBUG:  ProcessQuery
LOG:  query: SELECT WL0.empCd, WL0.cmpCd, WL0.empNameFll, WL0.ntsEndDate,
WL0.ntsStaDate, WL0.sctCd  FROM empMas WL0 WHERE ( WL0.sctCd = '0000000004'
)
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
LOG:  query: SELECT WL0.cmpCd, WL0.cmpFll  FROM cmpMas WL0 
DEBUG:  ProcessQuery
DEBUG:  CommitTransactionCommand
DEBUG:  ProcessQuery
DEBUG:  StartTransactionCommand
DEBUG:  CommitTransactionCommand
DEBUG:  StartTransactionCommand
DEBUG:  StartTransactionCommand
LOG:  query: SELECT WL0.sctCd, WL0.cmpCd, WL0.ntsEndDate, WL0.ntsStaDate,
WL0.sctNameFll  FROM SctMas WL0 
DEBUG:  StartTransactionCommand
LOG:  query: SELECT WL0.empCd, WL0.cmpCd, WL0.empNameFll, WL0.ntsEndDate,
WL0.ntsStaDate, WL0.sctCd  FROM empMas WL0 WHERE ( WL0.sctCd = '0000000008'
)
LOG:  query: commit
LOG:  query: DELETE FROM meisai WHERE dnpms = '0000000010001'
DEBUG:  ProcessUtility
WARNING:  COMMIT: no transaction in progress
DEBUG:  CommitTransactionCommand
DEBUG:  proc_exit(0)
------------------------<EJBログ ここまで>------------------------


PostgreSQL7.3.6単体ではこの現象は発生せず、
また、別のJ2EEサーバであるJBossを使用した際もこの現象は発生しませんでした。
そのため、WebLogic特有の現象ではあると思うのですが、
ログの内容を見る限りでは
 set auto commit off → クエリを実行 → commit
という流れのようなので、
 「no transaction in progress」
というメッセージが出る理由が良く分からず途方にくれています。

WebLogicが商用のJ2EEサーバと言うことで、検証が難しいかと思いますが、
よろしくお願いいたします。



P.S
上記の件とは直接関連がないのですが、
JDBCを使用してPGClusterにアクセスすると、
レプリケーションサーバのログに

DEBUG(PGRread_packet): connection closed
ERROR(PGRread_packet): session closed
DEBUG(child_wait): replicate main: selected

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

*******************************************
 株式会社サンモアテック 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 メーリングリストの案内