[Seasar-user:8413] Re: Synchronization:afterCompletion(int status)の呼び出しに関して

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 6月 18日 (月) 16:45:20 JST


小林 (koichik) です.

Date:    Mon, 18 Jun 2007 16:06:56 +0900
From:    鈴木 順 <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:8402] Synchronization:afterCompletion(int status)の呼び出しに関して

> 現状のソースを見てみたところ、Transactionがcommitされた場合のみafterCompletionが呼び出されていると思われます。

Transaction#rollback() が呼び出された場合は
afterCompletion() は呼び出されます.

しかし,Transaction#commit() が呼び出された中でコミット
できなかった場合は afterCompletion() が呼び出されないで
抜けてしまいますね...

これはバグですので修正します.

> S2Hibernateのorg.seasar.hibernate3.impl.S2SessionFactoryImplでは
> SynchronizationImpl:afterCompletionがコールバックされた際に、
> Session(Hibernateの)の開放を行っていると思われます。
> その為、SessionがCloseされない(コネクションの開放漏れが起こるのでは?)と推測します。

トランザクションコミット時に beforeCompletion() で
例外が発生した場合などにそうなります.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



Seasar-user メーリングリストの案内