camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ├ľnder Sezgin (JIRA) <j...@apache.org>
Subject [jira] [Commented] (CAMEL-11609) camel-univocity-parsers: marshaller not thread safe
Date Thu, 27 Jul 2017 20:57:00 GMT

    [ https://issues.apache.org/jira/browse/CAMEL-11609?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16103900#comment-16103900
] 

├ľnder Sezgin commented on CAMEL-11609:
--------------------------------------

As far as i can understand field matching is through the reconstruction of {{this.headers}}.
so it is important part.
so my view currently, if you don't have frequently changing headers, it should not be problem.
If it is to match the fields it seems lock on the resource getting updated seems to be a price
to pay. in such sence providing a simple PR.

> camel-univocity-parsers: marshaller not thread safe
> ---------------------------------------------------
>
>                 Key: CAMEL-11609
>                 URL: https://issues.apache.org/jira/browse/CAMEL-11609
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-csv
>    Affects Versions: 2.19.1
>            Reporter: Daniel Baldes
>
> org.apache.camel.dataformat.univocity.Marshaller.java is not thread safe.
> When this.adaptheaders is true, this.headers is modified in the wirteRow() method. This
can lead to ConcurrentModificationExceptions (see below) and jumbled headers, occasionally.
> I use a {{UnivocityCsvDataFormat}} for marshalling CSV in a route which is called in
parallel. The DataFormat creates a Marshaller with adaptheaders == true when headers are not
specified in the format.
> {code}java.util.ConcurrentModificationException: null
>             at java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:719)
>             at java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:742)
>             at org.apache.camel.dataformat.univocity.Marshaller.writeRow(Marshaller.java:95)
>             at org.apache.camel.dataformat.univocity.Marshaller.marshal(Marshaller.java:67)
>             at org.apache.camel.dataformat.univocity.AbstractUniVocityDataFormat.marshal(AbstractUniVocityDataFormat.java:94)
>             at org.apache.camel.processor.MarshalProcessor.process(MarshalProcessor.java:69)
>             at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
>             at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:541)
>             at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
>             at org.apache.camel.processor.Pipeline.process(Pipeline.java:120)
>             at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
>             at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
>             at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)
>             at org.apache.camel.processor.SendDynamicProcessor$1.doInAsyncProducer(SendDynamicProcessor.java:124)
>             at org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:436)
>             at org.apache.camel.processor.SendDynamicProcessor.process(SendDynamicProcessor.java:119)
>             at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:541)
>             at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
>             at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97)
>             at org.apache.camel.processor.WireTapProcessor$1.call(WireTapProcessor.java:137)
>             at org.apache.camel.processor.WireTapProcessor$1.call(WireTapProcessor.java:133)
>             at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>             at java.lang.Thread.run(Thread.java:748)
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message