[Seasar-user:14882] Re: S2JTA + S2Hibernate で、ConnectionPoolImpl からのコネクション取得に失敗することがある

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 7月 1日 (火) 17:00:36 JST


小林 (koichik) です.

Date:    Tue, 01 Jul 2008 15:06:05 +0900
From:    Noriyuki Mizutani <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:14879] Re: S2JTA + S2Hibernate で、ConnectionPoolImpl からのコネクション取得に失敗することがある

> 2.4.25 のログを整形したものを添付します。
> (2つのスレッドが絡んで非常に見づらいため、エクセルで
> 色付けしました)

ありがとうございました.原因判明しました.

現在の S2DBCP はトランザクションの終了時に
コネクションをクローズしてプールに戻しています.
また,Hibernate もコネクションをクローズします.
そのため,同じコネクションに対してクローズが
2 回行われます.

コネクションプールの maxPoolSize がスレッドより
少ないと,S2DBCP がコネクションをプールに戻すと
同時に別スレッドがそのコネクションをプールから
取り出して使用します.
その後 Hibernate がコネクションをクローズすると,
そのコネクションは既に別スレッドで使われているため,
今回の現象になってしまいます.

この問題は S2JDBC でも発生する可能性があります.
S2Dao では発生しません.

対応するには S2DBCP に大きく手を加えることになるため,
rc を出すなどリリースまで時間がかかりそうなので,
現時点でたまっている修正を 2.4.26 としてリリースした後,
2.4.27 での対応にしたいと思います.

SNAPSHOT は早めに出すので,それまでは maxPoolSize を
増やして回避していただけないでしょうか.
よろしくお願いします.


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