[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 メーリングリストの案内