[DAO-33] Dao の初期化と Connection の取得との間でデッドロックが発生 Created: 2006-08-10  Updated: 2007-07-24  Resolved: 2007-07-24

Status: Resolved
Project: S2Dao
Component/s: s2dao
Affects Version/s: 1.0.35
Fix Version/s: 1.0.45

Type: Bug Priority: Major
Reporter: manhole Assignee: manhole
Resolution: Fixed Votes: 0
Labels: None


 Description   

http://suga.parfe.jp/td/index.cgi?date=20060809#p01

ConnectionPool の Connection が全て駆り出された状態で、synchronized (1) な DaoMetaDataFactoryImpl#getDaoMetaData() メソッドが ConnectionPoolImpl から Connection を取得しようとして checkOut() メソッド内のループ (2) で待ち状態に入り、すでに Connection を持っているスレッドが DaoMetaDataFactoryImpl#getDaoMetaData() の synchronized (1) 待ちに入ることでデッドロックが完成します。あとは初期化できていない Dao を使おうとして次々に synchronized (1) 待ちに入っていく



 Comments   
Comment by manhole [ 2007-07-24 ]

r950で対応しました。

テストコードは書けませんでした。。。orz

Comment by manhole [ 2007-07-24 ]

この方法で対応する。
http://d.hatena.ne.jp/t-katochin/20060830#1156912279

Generated at Tue Apr 15 21:36:13 JST 2025 using Jira 10.5.0#10050000-sha1:9d9d098bb7b67e8dba8da380ba9c3900d82ac3cf.