[seasar-s2dao-dev:700] Re: [Seasar-user:21792] について(DaoMetaDataの初期化タイミング)

Hiroyuki Ohnaka [E-MAIL ADDRESS DELETED]
2014年 2月 18日 (火) 00:43:39 JST


大中です。

On Sat, 15 Feb 2014 21:33:22 +0900
kubo <dbflute @ gmail.com> wrote:

> 久保(jflute)です
> 
> MLの方の原因がそれかどうかまだちょっと理解していないのですが...
> (二重に走って名前がAOPの名前がバッティング!?
> 
> 現状の実装は、たぶん違うクラスの初期化を
> 同時に走らせたいるようにしてるんだと思われますが、
> 一つにまとめるとそこがシリアルになっちゃうんじゃないかと。

On Mon, 17 Feb 2014 02:50:51 +0000
YASUO HIGA <higa @ isid.co.jp> wrote:

> ひがです。
> 
> 初期化が二重で走るのは、想定通りなんですが、初期化の中で、AOPの動的クラス作成が行われ、
> そこがスレッドセーフになっていないのは、考慮漏れでした。

ああ、確かに全体でsynchronizedで囲むと複数のDaoの初回アクセスが
同時に走った時に待ちが発生しますね...

AOPのクラス拡張って、dao.diconのデフォルトだとクラスのエンハンスを
行わないので、(org.seasar.dao.impl.NullBeanEnhancer)、デフォルトだと
問題ない挙動だということになりますね、

(1) dao.dicon のBeanEnhancer関連の記述を元の設定に戻せないか
(2) (1)が出来ない場合、DaoMetaDataFactoryImplでcreateDaoMetaDataを
  オーバーライドしてもらう

対応を提案したいと思います。

振り回してすみませんが、よろしくお願いします。


On Mon, 17 Feb 2014 02:50:51 +0000
YASUO HIGA <higa @ isid.co.jp> wrote:

> ひがです。
> 
> 初期化が二重で走るのは、想定通りなんですが、初期化の中で、AOPの動的クラス作成が行われ、
> そこがスレッドセーフになっていないのは、考慮漏れでした。
> 
> createDaoMetaDataをsynchronizedするのが、良いんじゃないかと思います。
> ________________________________________
> 差出人: seasar-s2dao-dev-bounces @ ml.seasar.org [seasar-s2dao-dev-bounces @ ml.seasar.org] が次の人の代理で送信しました: Hiroyuki Ohnaka [azusa @ fieldnotes.jp]
> 送信日時: 2014年2月14日 21:15
> 宛先: seasar-s2dao-dev @ ml.seasar.org
> 件名: [seasar-s2dao-dev:697] [Seasar-user:21792] について(DaoMetaDataの初期化タイミング)
> 
> 大中です。ご無沙汰しています。
> 
>  [Seasar-user:21792] で小林さんに回答してもらったDaoMetaDataFactoryImplの初期化処理ですが、
> 
> DaoMetaDataFactoryImpl#getDaoMetaDataでいったんdaoMetaDataCacheで
> 排他をかけていますが、その後の128行目から130行目のところは、
> 排他がいったん外れるため、初期化処理が二重に走る場合があるように
> 思われます。
> 
> https://github.com/seasarorg/s2dao/blob/master/s2-dao/src/main/java/org/seasar/dao/impl/DaoMetaDataFactoryImpl.java#L128-L130
> 
> この部分は、2つあるsynchronizedのブロックを一つにまとめるように
> 修正しようと思いますが、みなさんはどう思われますか?
> 
> 
> 
> _______________________________________________
> seasar-s2dao-dev mailing list
> seasar-s2dao-dev @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-s2dao-dev
> _______________________________________________
> seasar-s2dao-dev mailing list
> seasar-s2dao-dev @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-s2dao-dev


-- 
azusa @ gmail <azusa @ fieldnotes.jp>


seasar-s2dao-dev メーリングリストの案内