任务单 #11245

マルチスレッド環境でメール生成に失敗する
开放日期: 2007-10-31 17:26 最后更新: 2008-01-20 23:12

报告人:
属主:
类型:
状态:
关闭
组件:
(无)
里程碑:
(无)
优先:
5 - Medium
严重性:
5 - Medium
处理结果:
Fixed
文件:
1

Details

XMLVelocityMailBuilderImpl#buildで下記例外が発生する場
合が、稀にありました。

---
Caused by: org.xml.sax.SAXException: FWK005 parse may
not be called while parsing.
at
com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:253)
at
com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283)
at
com.ozacc.mail.impl.XMLVelocityMailBuilderImpl.build(XMLVelocityMailBuilderImpl.java:200)
at
com.ozacc.mail.impl.XMLVelocityMailBuilderImpl.buildMail(XMLVelocityMailBuilderImpl.java:136)
---

XMLVelocityMailBuilderImplは、Seasar2のsingletonとして
利用しています。

追ってみると、
- DocumentBuilderはキャッシュ化されていてどのスレッドか
らも同じインスタンスが取得される。
- DocumentBuilder#parse → DOMParser#parse →
XMLParserConfiguration#parse → (実装クラス)
XML11DTDConfiguration#parse でこけてました。

XML11DTDConfigurationには、fParseInProgressというフラグ
があって、trueの場合(パース中)に他からのparse呼び出し
を防いでしまう(上記例外発生)んですね。。。

AbstractXMLMailBuilder#getDocumentFromClassPath は
synchronizedされていましたので、この点については把握さ
れていると思いますので、漏れでしょうか?

長くなりましたが、不具合報告でした。

任务单历史 (3/5 Histories)

2007-10-31 17:50 Updated by: dragon3
  • File 2069: test.tar.gz is attached
评论
Logged In: YES
user_id=3240

対応についてを書きわすれました。

XMLVelocityMailBuilderImpl#build を synchronized するか、

Document newDoc = db.parse(source);

の部分のみを、thisなどでsynchronizedすれば良さそうでした。
現象の再現と対応についてテストしたコートを添付します。
2007-10-31 17:55 Updated by: otsuka
  • 处理结果 Update from to Accepted
评论
Logged In: YES
user_id=2072

ご報告ありがとうございます。

ちょっと今は時間が取れないのですが、できるだけ早く確認して対
応します。
2007-11-01 14:38 Updated by: dragon3
评论
Logged In: YES
user_id=3240

急いではいませんので、良いタイミングで対応していただければと
思いますー。
2008-01-08 18:23 Updated by: otsuka
  • Ticket Close date is changed to 2008-01-08 18:23
  • 处理结果 Update from Accepted to Fixed
  • 状态 Update from 开启 to 关闭
评论
Logged In: YES
user_id=2072

大変遅くなってしまいましたが、この点を修正したバージョン
1.2.2をリリースしました。ご確認いただければと思います。
2008-01-20 23:12 Updated by: dragon3
  • Ticket Close date is changed to 2008-01-20 23:12
评论
Logged In: YES
user_id=3240

修正リリースありがとうございました。

Attachment File List

  • test.tar.gz(1KB)
    • マルチスレッドでのテスト

编辑

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » 登录名