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