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

Susumu ISHIGAMI susumu.ishigami @ gmail.com
2017年 7月 5日 (水) 22:07:35 JST


いしがみです

大変遅くなりましたが、報告いただいた、mayaaファイルの表記によって、
${} で指定してる変数名が展開される不具合を再現し、修正したバージョンのスナップショットを作成しました。
https://oss.sonatype.org/content/repositories/snapshots/com/github/seasarorg/mayaa/mayaa/1.1.34-SNAPSHOT/mayaa-1.1.34-20170704.112730-2.jar

近日中に、1.1.34としてリリースする予定です。

2017年6月4日 16:48 Susumu ISHIGAMI <susumu.ishigami @ gmail.com>:
> いしがみです
>
> 近澤さん、ご連絡ありがとうございます。
> mayaa-1.1.34のリリースについては、コミッター内で方針を検討中です。
>
> 1.1.33で追加したパフォーマンス対策の修正が原因の可能性がありますので該当機能を解除するか
> 設定でOn/Offできるようにするかなどを検討中です。
>
> 余談ですが、Guiceといえばかつて私がここで質問したこちらを思い出して懐かしいと思いました。
> https://ml.seasar.org/archives/mayaa-user/2009-August/000844.html
>
> 以上、よろしくお願いいたします。
>
>
> 2017年6月1日 0:51 CHIKAZAWA, Ei <chikazawa @ echosystem.co.jp>:
>> いしがみさま
>>
>> お世話になります。近澤です
>>
>> 確認が遅くなって申し訳ありません。。
>>
>>> こちらで一連の現象が発生しないか、ご確認頂けませんでしょうか。
>>
>>
>> インデントが消える現象は発生しなくなったのですが、
>> mayaa で書いた変数名がそのままhtmlに展開されたり、
>> m:if で例外が発生する現象はまだ発生していて、まともに動かない状況です。。
>>
>> Servlet ではなく、テンプレートエンジン的に使っていたり、
>> DI (Guice3.0) で取得したインスタンスに mayaa で
>> アクセスしたりしてるのも何か影響があるのかも・・?
>> と思ったりしてますが、なかなか時間がとれずおいきれていません。。
>> 申し訳ありません。。
>>
>> 他の方から同様の動作不良の問題報告がないようでしたら、
>> 新版リリース(1.1.34)されてください。。
>>
>> 1.1.32 だと動くので当面そのままいけますし、
>> 弊社アプリだけの問題でリリースできないのも申し訳ないので。。
>> (まとまった時間が取れたら、ゆっくり追ってみます)
>>
>> お手数おかけしました。。
>>
>>
>>
>> On 2017/05/14 18:08, Susumu ISHIGAMI wrote:
>>>
>>> 近澤さん
>>>
>>> いしがみです
>>>
>>> インデントが消える件に対応したSNAPSHOTを公開いたしました。
>>>
>>> こちらで一連の現象が発生しないか、ご確認頂けませんでしょうか。
>>>
>>> もし、問題ないようでしたら、こちらを、mayaa-1.1.34としてリリースするように進めます。
>>>
>>> https://github.com/seasarorg/mayaa/issues/5
>>>
>>> 2017年5月6日 16:26 Susumu ISHIGAMI <susumu.ishigami @ gmail.com>:
>>>>
>>>> いしがみです。
>>>>
>>>> 近澤さま、報告誠にありがとうございます。
>>>> 現象こちらでも確認することができ、現象の原因となったコミットを特定することができました。
>>>> 現在修正中ですので、近いうちに修正版をリリースできると思います。
>>>>
>>>> 2017年5月2日 20:01 CHIKAZAWA, Ei <chikazawa @ echosystem.co.jp>:
>>>>>
>>>>> いしがみ 様
>>>>>
>>>>> 近澤です。
>>>>>
>>>>> ご確認ありがとうございます。
>>>>>
>>>>> なんとか頑張って(?)、Blank War の上で binding の問題を再現しようと
>>>>> したのですが、まだ再現できていません。。
>>>>> あまり時間も取れず、、申し訳ありません。
>>>>>
>>>>> ただ、特に何もせず 1.1.32 -> 1.1.33 に差し替えた状態で、
>>>>> html インデントが詰まる現象は確認できました。
>>>>> 1.1.32 に戻すと、インデントが復活します。
>>>>>
>>>>> OS: macOS Sierra 10.12.4
>>>>> JavaVM: Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
>>>>> Tomcat: 7.0.47
>>>>>
>>>>> 後、弊社アプリでは m:forEach の明細部分で、${} で指定してる変数名が
>>>>> そのまま展開される現象もありました。
>>>>>
>>>>> さらに、これは関係ないかもわかりませんが 1.1.33 だと以下の例外でよくこけます。
>>>>>
>>>>> org.seasar.mayaa.impl.builder.library.ExpectedTypeMismatchValueException:
>>>>> value is mismatch for boolean - http://mayaa.seasar.org: if.test
>>>>>
>>>>>
>>>>> まとまりのない情報ばかりで申し訳ありません。
>>>>> binding の現象と合わせてもう少し見てみます ..
>>>>>
>>>>> 取り急ぎの報告です ...
>>>>> 何卒宜しくお願い致します。
>>>>>
>>>>>
>>>>>
>>>>> On 2017/05/01 17:21, Susumu ISHIGAMI wrote:
>>>>>>
>>>>>>
>>>>>> 近澤さま、石川さま
>>>>>> いしがみです。
>>>>>>
>>>>>> お返事が遅くなってしまい申し訳ありません。
>>>>>>
>>>>>> mayaaコミッターの方で再現を試みましたが再現できませんでした。
>>>>>> binding.titleを設定したページを作成し、<br>のようなタグが入り込むような現象は確認できませんでした。
>>>>>>
>>>>>> お手数をおかけしますが、
>>>>>> Blank War (http://mayaa.seasar.org/downloads/mayaa-1.1.32.war)
>>>>>> を展開し、
>>>>>> WEB-INF/lib/mayaa-1.1.32.jar
>>>>>> の代わりに、
>>>>>> mayaa-1.1.33.jar
>>>>>> に差し替えて、再現するコードを作っていただき送っていただけませんでしょうか?
>>>>>> その際のOS、JavaVM、Tomcatのバージョンもお伝えいただけると参考になります。
>>>>>>
>>>>>> 2017年4月19日 21:50 Susumu ISHIGAMI <susumu.ishigami @ gmail.com>:
>>>>>>>
>>>>>>>
>>>>>>> 近澤さま、石川さま
>>>>>>> いしがみです。
>>>>>>>
>>>>>>> ご連絡ありがとうございます。
>>>>>>> 確認します。
>>>>>>>
>>>>>>> 今回よりビルドに使用するコンパイラと環境が変わっておりますので、その影響も考えられます。
>>>>>>>
>>>>>>> 2017/04/19 2:11 "Hara Hara" <iso_hara @ hotmail.com>:
>>>>>>>
>>>>>>> お世話になっております、石川と申します
>>>>>>>
>>>>>>> ご報告が遅くなりまして申し訳ございません
>>>>>>> 私の方も近澤さまと同じくHTMLの空白が詰まったり、今まで問題なかったm:ifでエラーが出たりしました
>>>>>>> TOMCAT7+java6の環境になります
>>>>>>>
>>>>>>> ただ、TOMCAT5+java6では問題ありませんでした
>>>>>>>
>>>>>>> どうぞ宜しくお願い致します
>>>>>>>
>>>>>>>
>>>>>>> 2017/04/19 1:11 "CHIKAZAWA, Ei" <chikazawa @ echosystem.co.jp>:
>>>>>>>
>>>>>>> お世話になります
>>>>>>>
>>>>>>> 近澤と申します
>>>>>>>
>>>>>>> 今まで 1.1.32 で動作していたプロジェクトを
>>>>>>> 1.1.33 に変更して動作確認しているのですが、
>>>>>>> 今までと動きが異なる箇所があり、まだ切り替えに至っておりません。
>>>>>>>
>>>>>>> Tomcat 7.0.47 でしか確認できていませんが ...
>>>>>>>
>>>>>>> 1)
>>>>>>> org.seasar.mayaa.provider.ServiceProvider で、
>>>>>>> outputTemplateWhitespace に true を指定した状態
>>>>>>>   →1.1.32
>>>>>>>     HTML の記載通り、空白も出力される
>>>>>>>   →1.1.33
>>>>>>>     各行の先頭空白が詰められる
>>>>>>>
>>>>>>> 2)
>>>>>>> m:insert で、以下のようにパラメータを渡して "binding.title" で表示
>>>>>>> <m:insert m:id="a" path="a.html" name="a" title="sample title" />
>>>>>>>
>>>>>>>   →1.1.32
>>>>>>>     <span>sample title</span> と出力される
>>>>>>>   →1.1.33
>>>>>>>     <span>
>>>>>>>      <br>
>>>>>>>       sample title
>>>>>>>      <br>
>>>>>>>     </span>
>>>>>>>     と、なぜか br が付いて展開される
>>>>>>>
>>>>>>> その他にもいくつか動作が不安定なのですが、
>>>>>>> 上記以外の事象は、まだはっきりつかめていません。
>>>>>>>
>>>>>>> Mayaa のバージョンをあげる以外に、どこか注意すべき点など
>>>>>>> ありましたらご教授いただけないでしょうか。
>>>>>>>
>>>>>>> 宜しくお願い致します。
>>>>>>>
>>>>>>> On 2017/03/25 18:37, Susumu ISHIGAMI wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> いしがみ(susumuis)です。
>>>>>>>>
>>>>>>>> Maven Central Repository に 1.1.33 をリリースしました。
>>>>>>>>
>>>>>>>> Apache Mavenを使用している場合は、dependency
>>>>>>>> を以下のように切り替えることで使用することができます。(groupId=org.seasar.mayaaではなくなります)
>>>>>>>>
>>>>>>>> <dependency>
>>>>>>>>      <groupId>com.github.seasarorg.mayaa</groupId>
>>>>>>>>      <artifactId>mayaa</artifactId>
>>>>>>>>      <version>1.1.33</version>
>>>>>>>> </dependency>
>>>>>>>>
>>>>>>>> jarファイルのみが必要な場合は直接 Maven リポジトリから取得してください。
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> http://repo1.maven.org/maven2/com/github/seasarorg/mayaa/mayaa/1.1.33/mayaa-1.1.33.jar
>>>>>>>>
>>>>>>>> 今後はこちらにリリース情報を記載します。
>>>>>>>> https://github.com/seasarorg/mayaa/
>>>>>>>>
>>>>>>>> 2017年3月21日 5:25 suga <ko.suga @ gmail.com>:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> suga です。
>>>>>>>>>
>>>>>>>>> 現在コミッタでMavenのCentral Repositoryへdeployする準備中です。
>>>>>>>>> もうしばらくお待ちください。
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 2017年3月16日(木) 20:47 Hara Hara <iso_hara @ hotmail.com>:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 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
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> ReferenceCacheのcontains, removeが動作しない · Issue #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
>>>>>>>>>> _______________________________________________
>>>>>>>>>> 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
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> 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
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> mayaa-user mailing list
>>>>> mayaa-user @ ml.seasar.org
>>>>> https://ml.seasar.org/mailman/listinfo/mayaa-user
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Susumu ISHIGAMI
>>>> susumu.ishigami @ gmail.com
>>>
>>>
>>>
>>>
>> _______________________________________________
>> mayaa-user mailing list
>> mayaa-user @ ml.seasar.org
>> https://ml.seasar.org/mailman/listinfo/mayaa-user
>
>
>
> --
> Susumu ISHIGAMI
> susumu.ishigami @ gmail.com



-- 
Susumu ISHIGAMI
susumu.ishigami @ gmail.com


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