[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 メーリングリストの案内