[Seasar-user:21308] Re: [s2csv]同じCSVEntityを用いるCSVファイルをマルチスレッドで読み込むとバリデーションエラーとなる

大塚 [E-MAIL ADDRESS DELETED]
2012年 3月 30日 (金) 20:04:02 JST


newta様

ご連絡ありがとうございます。
ご教示いただいた方法を試してみます。
改めて結果を報告いたします。

大塚。
2012/03/30 19:58 "newta" <[E-MAIL ADDRESS DELETED]>:

> お世話になります。
> newtaです。
>
> CSVDescPoolImplのメタデータのキャッシュで
> cacheにHashMapを使ってるのが問題に見えますね。。
>
> 同期したMapを使おうと思います。
>
> 直近の対応としてはCSVDescPoolを継承したクラスを作ってもらって、
> cacheにMapUtil.createHashMapで同期されたHashMapを生成するか
> ConcurrentHashMapなどを使ってもらうかして、
> diconで作成したクラスを指定して、利用してもらえればと思います。
>
>
>
> 2012年3月30日16:45 大塚 <[E-MAIL ADDRESS DELETED]>:
> > seasar-userの皆様。
> > お世話になります。大塚です。
> >
> > s2csvを利用させていただき、利便性の高さに感謝しております。
> >
> > 同ライブラリを用いて複数のCSVファイルをマルチスレッドに読み込んだところ、
> > 以下の様に一定の頻度でバリデーションエラーとなるケースが発生したため報告いたします。
> >
> > 環境
> > OS:Windows7 64bit
> > JDK:1.6.0_25
> > JAR:s2-framework-2.4.45.jar、s2csv-0.0.2-sp1.jar
> >
> > 前提
> >  書式が同一のCSVファイル(10行程度)*15ファイル。
> >  同一のCSVEntityを使用。
> >  スレッド数は2ないし3でほぼ同時に起動。
> >
> > 現象
> >  本来はエラーとならない行(カラム)で、一定の頻度(200回中18回)でバリデーションエラーとなる。
> >
> > その他
> >  s2csv.diconにて、org.seasar.s2csv.csv.desc.impl.CSVDescPoolImplを
> >  singletonからprototypeとしたところ発生しなくなりました。(0/200)
> >  また、シングルスレッドで実行した場合も発生しない様です。
> >
> > 再現させるためのミニマムコードがすぐには示せないのが申し訳ないですが、取り急ぎご報告まで。
> > _______________________________________________
> > Seasar-user mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-user
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20120330/7e7fb334/attachment.html>


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