[Seasar-user:2303] Re: 高負荷時 ConnectionPool が wait 状態になる
kazukikudo@nifty.ne.jp
kazukikudo
2005年 6月 29日 (水) 15:59:59 JST
工藤一樹です。
おかざきさん、お忙しいところ返信ありがとうございます。
S2SessionFactoryImplのsynchronized の箇所をコメントにしてみたのですが
解決しませんでした。やはりwaitで止まっています。
S2Hibernate1.0.6B3 でこの部分を修正されていますよね。デッドロックの不具合で。
今回の不具合はデッドロックではなさそうな気がします。デッドロックならば2つ以上
のスレッドがsynchronizedのところで止まっているはずです。Eclipseのデバッガで確
認しましたが止まっているのはConnectionPoolImpl#checkOut()のwaitメソッドのとこ
ろです。
以上、よろしくお願い致します。
工藤一樹 [E-MAIL ADDRESS DELETED]
>
>おかざきです。
>
>すみません。今すぐは、ちゃんと検証できないのですが、
>S2SessionFactoryImpl#closeSession()
>を次の様に2行コメントアウトして、試していただけませんか?
>
>org.seasar.hibernate.impl.S2SessionFactoryImpl
>==============================================================
> private void closeSession() {
> Transaction tx = getTransaction();
> if (tx != null) {
> S2Session session = null;
>// synchronized (this) {
> session = (S2Session) txSessions_.remove(tx);
>// }
> if (session != null && session.isOpen() ) {
> try {
> session.clear() ;
> } finally {
> Connection con = session.close();
> ConnectionUtil.close(con);
> }
> }
> }
> }
Seasar-user メーリングリストの案内