-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major
-
Component/s: None
-
None
-
Environment:DBFulute 0.5.7-SNAPSHOT
アプリケーションを起動した後、複数スレッドからDaoのメソッドを同時に呼び出すなどしてDBFlute(&S2Dao)の初期化処理を同一タイミングで走らせるようにすると、処理が途中で停止することがある。
具体的には、Webアプリケーションで起動して最初に同時アクセスを行なったところ、ConditionBeanContext#addColumnAliasInfo()の156行目で処理が停止してしまった。
原因は以下のように推測される:
- 初期化処理が同期化されていないこと
- 同期化されていない状態でHashMap#put()を同時に呼び出したことで無限ループに陥っている可能性があること
(see: http://forum.java.sun.com/thread.jspa?threadID=5163912&messageID=9626200 )
なおデバッガを仕掛けて追っていくことができない環境だったため、上記仮説が正しいかは不明です。