[mayaa-user:1065] Re: ReferenceCacheの不具合報告

Hara Hara [E-MAIL ADDRESS DELETED]
2017年 3月 16日 (木) 20:46:51 JST


suga様 水野様

お世話になっております。 石川と申します。

水野様、確認が遅くなりまして申し訳ございません、お心添えいただきありがとうございました。

suga様、大変申し訳ございません、ご対応頂きましたバージョンは公式サイトでリリース頂くことは可能でしょうか。

チームの規定で公式にリリースされたものしか取り扱うことが出来ず、

お手数でございますが、ご検討いただけますと幸甚に存じます。

何卒よろしくお願いいたします。
________________________________
差出人: mayaa-user-bounces @ ml.seasar.org <mayaa-user-bounces @ ml.seasar.org> が 水野謙 <mizuno.ken @ interfactory.co.jp> の代理で送信
送信日時: 2017年1月23日 9:28
宛先: Discussion list for mayaa users
件名: [mayaa-user:1064] Re: ReferenceCacheの不具合報告

suga さん、

水野です。迅速な対応ありがとうございます。

2017年1月22日 21:19 suga <ko.suga @ gmail.com>:
> suga です。
>
> この件、下記にて対応しました。
>
> https://github.com/seasarorg/mayaa/issues/3
[https://avatars3.githubusercontent.com/u/1319421?v=3&s=400]<https://github.com/seasarorg/mayaa/issues/3>

ReferenceCacheのcontains, removeが動作しない · Issue #3 ...<https://github.com/seasarorg/mayaa/issues/3>
github.com
[mayaa-user:1061] より。 ReferenceCacheのcontains, removeが動作しない。 addする際にReferenceでwrapしているため、比較する際にはそれを ...


>
>
> 2017年1月17日(火) 9:18 suga <ko.suga @ gmail.com>:
>>
>> suga です。
>>
>> ありがとうございます。
>> 私の方でも確認して修正します。
>>
>>
>> 2017年1月16日(月) 20:16 水野謙 <mizuno.ken @ interfactory.co.jp>:
>>>
>>> お世話になっております。
>>> インターファクトリーの水野と申します。私自身がこのMLに投稿するのは初めてですが、
>>> 以前弊社に在籍していた石上さん経由で大変お世話になっておりました。
>>>
>>> さて表題の件ですが、NamespaceImpl#getInstance および deserialize に書かれている下記ロジックが
>>> 期待通りに動作していないと思われる不具合を発見しました。
>>>             if (_cache.contains(namespace) == false) {
>>>                 _cache.add(namespace);
>>>             }
>>>
>>> ReferenceCache#add にて、要素を SoftReference 等でラップしてから追加していますが、
>>> contains メソッドは ArrayList の実装がそのまま使われるため、常に false を返していると思われます。
>>> このため、重複する要素が多数 _cache に追加され、弊社本番環境では起動後半日の運用で
>>> 2万を超える要素数となっておりました。
>>>
>>> ArrayList#contains は内部的に indexOf を呼び出しているので、下記のように indexOf を
>>> オーバーライドすることで解消できそうです。
>>>     public int indexOf(Object o) {
>>>         for (int i = 0; i < size(); i++) {
>>>             if (((Reference)get(i)).get().equals(o)) {
>>>                 return i;
>>>             }
>>>         }
>>>         return -1;
>>>     }
>>>
>>> なお、こちらは未検証ですが、URLImpl#setValue にある下記ロジックにも類似の問題がありそうです。
>>>         if (_value != null) {
>>>             _cache.remove(this);
>>>         }
>>>
>>> 参考までに本不具合に気付いた経緯についてですが、弊社本番環境にてごくまれに、
>>> 性能が突然極端に低下し、CPUリソースが枯渇する現象が発生しておりました。
>>> スレッドダンプを取得したところNamespaceImpl.getInstanceにてモニタ取得待ちで待機している
>>> スレッドが大量にあり、付近のロジックを調査して発見した次第です。
>>> だいぶ前の話ではありますが、[mayaa-user:1027] にて石川様が報告されている現象も
>>> 同一の原因かもしれません。
>>>
>>> ご確認の上、修正のご検討をいただけますでしょうか。
>>> なお、弊社環境用には既に修正版を作成済みのため、弊社側の状況としては特に急いではおりません。
>>>
>>> よろしくお願いいたします。
>>>
>>> --
>>> 株式会社インターファクトリー   水野 謙
>>> mizuno.ken @ interfactory.co.jp
>>>
>>> 〒102-0071
>>> 東京都千代田区富士見2-10-2 飯田橋グラン・ブルーム4階
>>> TEL:03-5211-0056 / FAX:03-5211-0059
>>> http://www.interfactory.co.jp
>>> _______________________________________________
>>> mayaa-user mailing list
>>> mayaa-user @ ml.seasar.org
>>> https://ml.seasar.org/mailman/listinfo/mayaa-user
>
>
> _______________________________________________
> mayaa-user mailing list
> mayaa-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/mayaa-user



--
株式会社インターファクトリー   水野 謙
mizuno.ken @ interfactory.co.jp

〒102-0071
東京都千代田区富士見2-10-2 飯田橋グラン・ブルーム4階
TEL:03-5211-0056 / FAX:03-5211-0059
http://www.interfactory.co.jp
_______________________________________________
mayaa-user mailing list
mayaa-user @ ml.seasar.org
https://ml.seasar.org/mailman/listinfo/mayaa-user
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
URL: <http://ml.seasar.org/archives/mayaa-user/attachments/20170316/35c5e81f/attachment.html>


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