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

Susumu ISHIGAMI [E-MAIL ADDRESS DELETED]
2013年 2月 4日 (月) 11:51:58 JST


石上です。
いつもお世話になっております。

私の所で、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
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/mayaa-user/attachments/20130204/213e8152/attachment.html>


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