[mayaa-user:919] Re: Mayaa内部でbeanutilsに起因するメモリリークが発生している模様です

Susumu ISHIGAMI [E-MAIL ADDRESS DELETED]
2011年 2月 4日 (金) 11:29:47 JST


石上です。

> ひとまず mayaa-sample で試してみたところ、1.8.3 の場合 JSTL の formatDate で値が null だと
> 例外が発生します。(org.apache.commons.beanutils.ConversionException)
>
> これは 1.7.0 だと java.util.Date に対応するフォーマッタが存在しないため「何もせず」null を返し、
> 1.8.3 だと DateConverter に null を渡して例外、という動作のためです。
> DoubleConverter では null なら 0.0 が返るという動作をするため単純に null を返すという
> わけにもいかず、現状の動作と変えずに上げるのは難しそうです。

なるほど。たしかに難しいですね。
私のところでは、たまたまformatDateを使用していなかったので、気づきませんでした。

現時点で、beanutils1.7.0での不具合が発生した場合は、
・formatDateを使わない・又はnullにならないようにする
・既存のコードでDateConverterを直接使用していないか調査する
上記を行った上で、1.8.3にアップデートということで、各々対処できそうですね。

あるいは試していませんが、
ConvertUtils#register
で、独自のコンバーターを登録してしまう逃げもできるかもしれません。

これらは、Mayaaユーザー観点ですので、Mayaa本体のこととなると、お力になれなくて申し訳ないです。


2011年2月2日23:48 suga <[E-MAIL ADDRESS DELETED]>:
> suga です。
>
> 2011/2/2 Susumu ISHIGAMI <[E-MAIL ADDRESS DELETED]>:
>> また、バイナリ互換性はあるとのことですが、
>> commons-beanutils-core-1.7.0.jarをcommons-beanutils-core-1.8.3.jar
>> に差し替えても問題ないか、懸念点などありましたらご回答お願い致します。
>
> maven2 repository にあるものはjava 1.4 で読み込めますね。
>
> ひとまず mayaa-sample で試してみたところ、1.8.3 の場合 JSTL の formatDate で値が null だと
> 例外が発生します。(org.apache.commons.beanutils.ConversionException)
>
> これは 1.7.0 だと java.util.Date に対応するフォーマッタが存在しないため「何もせず」null を返し、
> 1.8.3 だと DateConverter に null を渡して例外、という動作のためです。
> DoubleConverter では null なら 0.0 が返るという動作をするため単純に null を返すという
> わけにもいかず、現状の動作と変えずに上げるのは難しそうです。
>
> また、問題が Date のときだけであれば Mayaa 側で null を返すようにするという
> 対応が可能ですが、もし Mayaa 以外で同 converter を同じように使っている
> ケースがあることを考えると、メンテナンスリリースで同梱するには判断が難しいです。
>
> beanutils の問題が大きいのと、1.7.0 が結構古いことを考えて、置き換える方向で考えます。
>
> --
> suga ( [E-MAIL ADDRESS DELETED] )
>
>
>
> 2011/2/2 Susumu ISHIGAMI <[E-MAIL ADDRESS DELETED]>:
>> お世話になっております。
>> 石上です。
>>
>> Mayaaを使用したプログラムで、特定の条件でOutOfMemoryErrorが発生することを確認しましたので報告致します。
>>
>> そのプログラムでは、クラスローダを独自カスタマイズし、(簡単に例えますと、S2ContainerのHotDeployのような仕組みで)
>> 実行時に動的にクラスをロードする仕組みを備えているのですが、
>> これを多用すると、Mayaaを使っているページで以下のエラーが発生します。
>>
>> java.lang.OutOfMemoryError: Java heap space
>>        org.apache.xerces.dom.DeferredDocumentImpl.createChunk(Unknown Source)
>>        org.apache.xerces.dom.DeferredDocumentImpl.ensureCapacity(Unknown Source)
>>        org.apache.xerces.dom.DeferredDocumentImpl.createNode(Unknown Source)
>>        org.apache.xerces.dom.DeferredDocumentImpl.createDeferredDocument(Unknown
>> Source)
>>        org.apache.xerces.parsers.AbstractDOMParser.startDocument(Unknown Source)
>>        org.apache.xerces.impl.dtd.XMLDTDValidator.startDocument(Unknown Source)
>>        org.apache.xerces.impl.XMLDocumentScannerImpl.startEntity(Unknown Source)
>>        org.apache.xerces.impl.XMLVersionDetector.startDocumentParsing(Unknown Source)
>>        org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
>>        org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
>>        org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
>>        org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
>>        org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
>>        javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:98)
>> 〜固有名称が記載されているので省略します〜
>>        javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
>>        javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
>>
>> このエラーはテンプレートにJSPを使っているページのみにアクセスしている限りは発生しませんでした。
>>
>> 原因はこれではないかと思います。
>> http://commons.apache.org/beanutils/v1.8.3/RELEASE-NOTES.txt
>>> Memory Leak
>>> ===========
>>> A memory leak was found in BeanUtils 1.7.0 (see BEANUTILS-291) which was fixed
>>> in BeanUtils 1.8.0 for JDK 1.5+.
>>
>> 参考
>> http://docs.redhat.com/docs/ja-JP/JBoss_Enterprise_Application_Platform/4.3/html/Release_Notes_CP04/Issues-fixed-in-this-release.html
>>> beanutils がバージョン 1.8.0 にアップグレードされ、WeakHashMap に関する循環参照が原因となっていたメモリーリークを修正する重要な改良が加えられました。
>>
>> 私のところで、試しにbeanutillsを最新の1.8.3に変えてみたところ、上記エラーが発生しなくなりました。
>>
>> 試していませんが、もしかすると、Seasar2のHotDeployを使用した開発環境でも再現するかもしれません。
>> 以上、報告までに。
>>
>> また、バイナリ互換性はあるとのことですが、
>> commons-beanutils-core-1.7.0.jarをcommons-beanutils-core-1.8.3.jar
>> に差し替えても問題ないか、懸念点などありましたらご回答お願い致します。
>> もし差し支えなければ、次回リリース時には、公式サイトにて配布される、blank war等にバンドルされる
>> ライブラリの更新をよろしくお願い致します。
>>
>> 石上 晋 ([E-MAIL ADDRESS DELETED]>> _______________________________________________
>> mayaa-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/mayaa-user
>>
> _______________________________________________
> mayaa-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/mayaa-user
>


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