[pgsql-jp: 33700] Re: コネクションクローズ時に WARNING: ROLLBACK: no transaction in progress が出ます

hanny hanny @ oasis.email.ne.jp
2004年 7月 18日 (日) 13:32:07 JST


回答を頂いた皆様
ありがとうございました。

お返事が遅くなりまして、申し訳ございません。


一応解決した(WARNING はでなくなった)のでご報告いたします。

| [pgsql-jp: 29118] Re: setAutoCommit で Warning 
| http://ml.postgresql.jp/pipermail/pgsql-jp/2003-February/004228.html

こちらのスレッドのテストクラス DBTest のように、

conn.close();
の前に、

conn.setAutoCommit(true);

を挿入したところ、WARNING が出なくなりました。

この結果を踏まえて考えたのですが、

conn.setAutoCommit(false);

としていると、conn.commit(); とした後、次のトランザクション待ち
状態になっており、conn.close(); を実行すると、内部的に ROLLBACK を
発行しているので、WARNING が出てしまうのでは。

と考えたのですが、如何でしょう?

また、今後は PostgreSQL のバージョンを 7.4 にあげることも視野に
入れていきたいと思います。

ありがとうございました。

On Thu, 10 Jun 2004 15:04:15 +0900 (JST)
Tatsuo Ishii <t-ishii @ sra.co.jp> wrote:
+---------------------------------------------------------------------
|石井です.
|
|> 谷田です。
|> 
|> On Thu, 10 Jun 2004 02:37:00 +0900
|> hanny <hanny @ oasis.email.ne.jp> wrote:
|> 
|> > DBCP   : commons-dbcp-1.1.jar
|> 
|> コネクションプーリングを利用しているのですね。
|> 
|> > WARNING:  ROLLBACK: no transaction in progress
|> > 
|> > という WARNING を吐いています。
|> > 特に ROLLBACK 処理を行っているところはないので、
|> 
|> 一般論として、コネクションプールの実装では、一度使い終わったコネクション
|> をリセットするために、ロールバック等の処理を内部的に行うのが普通です。
|> 
|> ですから、このrollbackはdbcpが吐いているのではないかと思います。だとすれ
|> ば実害はありません。
|
|そういえば,PHPのパーシスタントコネクションでも同じ理由でrollbackが出
|まくりますね.
|
|PostgreSQL 7.4ならrollbackが必要かどうか判断できるので,無条件に
|rollbackする必要はなくなります(たとえば現在開発中のpgpool 2.0では
|バックエンドがPostgreSQL 7.4なら必要なときだけrollbackするようにしてい
|ます)
|
|さすがにdbcpではそんな細かなところまで見てくれないでしょうから,ちょっ
|と無理っぽいとは思いますが...
|--
|Tatsuo Ishii
+---------------------------------------------------------------------


-- 
h @ nny
hanny @ oasis.mail.ne.jp




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