Hi Cameleers,

-1

not sure that was the correct solution, perhaps `headers` field of
Marshaller needs to be treated as immutable. Hard to tell on such a
rarely used component what was the initial intent of `headers` field,
but I guess it's what all marshallers need to add, so mutating it on a
per write seems wrong.

Any thoughts?

zoran

On Fri, Jul 28, 2017 at 10:27 AM,  <ond...@apache.org> wrote:
> Repository: camel
> Updated Branches:
>   refs/heads/master 6d0fdee12 -> 27d6c83ec
>
>
> CAMEL-11609:thread-safety if headers get modified on the fly
>
>
> Project: http://git-wip-us.apache.org/repos/asf/camel/repo
> Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/27d6c83e
> Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/27d6c83e
> Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/27d6c83e
>
> Branch: refs/heads/master
> Commit: 27d6c83ecd392168e59971f5de8e4ad258a1f461
> Parents: 6d0fdee
> Author: onders86 <ondersez...@gmail.com>
> Authored: Thu Jul 27 23:54:18 2017 +0300
> Committer: onders86 <ondersez...@gmail.com>
> Committed: Fri Jul 28 11:27:06 2017 +0300
>
> ----------------------------------------------------------------------
>  .../org/apache/camel/dataformat/univocity/Marshaller.java    | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/27d6c83e/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/Marshaller.java
> ----------------------------------------------------------------------
> diff --git 
> a/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/Marshaller.java
>  
> b/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/Marshaller.java
> index 5c113cb..e170c95 100644
> --- 
> a/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/Marshaller.java
> +++ 
> b/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/Marshaller.java
> @@ -46,7 +46,9 @@ final class Marshaller<W extends AbstractWriter<?>> {
>       */
>      Marshaller(String[] headers, boolean adaptHeaders) {
>          if (headers != null) {
> -            this.headers.addAll(Arrays.asList(headers));
> +            synchronized (this.headers) {
> +                this.headers.addAll(Arrays.asList(headers));
> +            }
>          }
>          this.adaptHeaders = adaptHeaders;
>      }
> @@ -86,7 +88,9 @@ final class Marshaller<W extends AbstractWriter<?>> {
>          Map<?, ?> map = convertToMandatoryType(exchange, Map.class, row);
>          if (adaptHeaders) {
>              for (Object key : map.keySet()) {
> -                headers.add(convertToMandatoryType(exchange, String.class, 
> key));
> +                synchronized (headers) {
> +                    headers.add(convertToMandatoryType(exchange, 
> String.class, key));
> +                }
>              }
>          }
>
>



-- 
Zoran Regvart

Reply via email to