[mayaa-user:956] Re: Mayaa内部にコンカレントの不具合の可能性を見つけました

suga [E-MAIL ADDRESS DELETED]
2013年 2月 4日 (月) 22:49:38 JST


suga です。

1.1.31-SNAPSHOT を作成して置きました。
これでいかがでしょうか。

http://maven.seasar.org/maven2-snapshot/org/seasar/mayaa/mayaa/1.1.31-SNAPSHOT/mayaa-1.1.31-20130204.131449-1.jar

パフォーマンスに関しては、当時と環境が全然異なるため、また計測して問題にならない限り
優先度を落として良いと考えています。




-- 
suga ( ko.suga @ gmail.com )


2013/2/4 Susumu ISHIGAMI <susumu.ishigami @ gmail.com>

> 石上です。
> いつもお世話になっております。
>
> 私の所で、Mayaaを利用させていただいているサービスの
> スレッドダンプを解析していたところ、
> HashMapのコンカレントの不具合らしき箇所が見受けられたため、
> 報告致します。
>
> スレッドダンプには以下のスタックトレースが複数見られました
>
> "TP-Processor218" daemon prio=1 tid=0x00007f04281c59e0 nid=0x5e52 runnable
> [0x00007f0407dfa000..0x00007f0407dfc890]
> at
> org.apache.commons.collections.map.AbstractHashedMap.getEntry(AbstractHashedMap.java:433)
>  at
> org.apache.commons.collections.map.AbstractReferenceMap.getEntry(AbstractReferenceMap.java:404)
> at
> org.apache.commons.collections.map.AbstractReferenceMap.get(AbstractReferenceMap.java:229)
>  at
> org.seasar.mayaa.impl.engine.specification.QNameImpl.getInstance(QNameImpl.java:51)
> at
> org.seasar.mayaa.impl.engine.specification.SpecificationUtil.createQName(SpecificationUtil.java:246)
>  at
> org.seasar.mayaa.impl.engine.specification.SpecificationUtil.createQName(SpecificationUtil.java:241)
> at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
>  at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
>  at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:161)
>
>
> QNameImpl.java:51を確認させていただいたところ
>
>         // 一時的に重複しても問題ないので速度を優先する。(synchronizeを外した)
>         QName result = (QName)_cache.get(key);
>
> という記載があります。
>         _cache
> の定義は
>         private static volatile Map _cache =
>                 new ReferenceMap(AbstractReferenceMap.HARD,
> AbstractReferenceMap.SOFT, true);
> となっております。
>
> ここで、ReferenceMapのJavaDocを参照したところ
>
> http://commons.apache.org/collections/api-3.1/org/apache/commons/collections/map/ReferenceMap.html
>
> This implementation is not synchronized. You can use
> Collections.synchronizedMap<http://java.sun.com/j2se/1.3/docs/api/java/util/Collections.html#synchronizedMap> to
> provide synchronized access to a ReferenceMap. Remember that
> synchronization will not stop the garbage collecter removing entries.
>
> という記載されています。
>
> パフォーマンスについてセンシティブな部分と思いますが、
> ご確認いただけませんでしょうか?
>
> 何卒よろしくお願い致します。
>
>
>
>
> --
> Susumu ISHIGAMI
>
> _______________________________________________
> mayaa-user mailing list
> mayaa-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/mayaa-user
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/mayaa-user/attachments/20130204/d15a2071/attachment.html>


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