[Seasar-user:2310] Re: 高負荷時 ConnectionPool が wait 状態になる

Koichi Kobayashi koichik
2005年 6月 30日 (木) 02:00:31 JST


小林 (koichik) です.

Date:    Wed, 29 Jun 2005 11:33:44 +0900 (JST)
From:    工藤一樹 <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:2298] 高負荷時 ConnectionPool が wait 状態になる

> waitしているのはConnectionPoolImpl#checkOut()です。
> コネクションの空きがない時にwaitします。
> waitに対してnotifyしているのがrelease()とcheckIn()です。
> しかしトランザクションのコミット時にチェックインしているメソッドは
> afterCompletion()から呼び出されたcheckInTx()でした。
> このcheckInTx()ではnotifyしていません。
> notifyしていなのでwaitが解除されません。

ご指摘ありがとうございます.
確かに漏れていますね... 気づきませんでした.

> checkInTx()をsynchronized化しメソッドの最後でnotify()を呼び出す様に修正
> した所、waitは適切に解除されるようになりました。
> 
> なぜcheckInTx()でnotifyしていないのか、修正方法が正しいのかわかりません

その修正で正しいと思います.
次のリリースで対応します.


-- 
<signature>
    <name>Koichi Kobayashi</name>
    <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>




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