[
https://issues.apache.org/jira/browse/CAMEL-10225?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen updated CAMEL-10225:
--------------------------------
Fix Version/s: 2.20.0
> Camel-Saxon is not thread safe
> ------------------------------
>
> Key: CAMEL-10225
> URL: https://issues.apache.org/jira/browse/CAMEL-10225
> Project: Camel
> Issue Type: Bug
> Components: camel-saxon
> Affects Versions: 2.16.3, 2.17.0, 2.17.1, 2.17.2
> Environment: Java 1.8.0_66-b17 Ubuntu 15.10 and Windows 10
> Reporter: David Bennison
> Assignee: Claus Ibsen
> Fix For: 2.20.0
>
> Attachments: camel-split-parrallel-xslt-bug.zip
>
>
> We perform an XSLT transform within a Split. We added camel-saxon so that we
> could use XSLT 2 for one particular transformation. This works fine when run
> synchronously but when we switch parallel to true on the split we get the
> following errors:-
> 2016-08-07T16:09:02,142 [Camel (camel-1) thread #4 - Split] ERROR
> org.apache.camel.processor.DefaultErrorHandler | | | |
> Failed delivery for (MessageId:
> ID-dave-ThinkPad-Edge-E540-35771-1470582541027-0-27 on ExchangeId:
> ID-dave-ThinkPad-Edge-E540-35771-1470582541027-0-32). Exhausted after
> delivery attempt: 1 caught: org.apache.camel.TypeConversionException: Error
> during type conversion from type: java.lang.String to the required type:
> java.lang.String with value <OrderResponseItem
> xmlns="http://api.channeladvisor.com/webservices/"
> xmlns:q3="http://api.channeladvisor.com/datacontracts/orders"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:type="q3:OrderResponseDetailComplete">
> <q3:NumberOfMatches>3</q3:NumberOfMatches>
> <q3:OrderTimeGMT>2016-07-04T08:07:38.893</q3:OrderTimeGMT>
> <q3:LastUpdateDate>2016-07-04T08:07:40.217</q3:LastUpdateDate>
> <q3:TotalOrderAmount>357.0000</q3:TotalOrderAmount>
> <q3:OrderState>Active</q3:OrderState>
> <q3:DateCancelledGMT xsi:nil="true"/>
> <q3:OrderID>9564205</q3:OrderID>
> <q3:ClientOrderIdentifier>1000008</q3:ClientOrderIdentifier>
> <q3:SellerOrderID/>
> <q3:OrderStatus>
> <q3:CheckoutStatus>Completed</q3:CheckoutStatus>
>
> <q3:CheckoutDateGMT>2016-07-04T08:07:38.893</q3:CheckoutDateGMT>
> <q3:PaymentSt... [Body clipped after 1000 chars, total
> length is 14996] due java.lang.NullPointerException. Processed by failure
> processor: FatalFallbackErrorHandler[Channel[Log(route2)[Error processing
> route: ${exception.stacktrace}]]]
> Message History
> ---------------------------------------------------------------------------------------------------------------------------------------
> RouteId ProcessorId Processor
> Elapsed (ms)
> [route1 ] [route1 ] [direct://in
> ] [ 378]
> [route1 ] [to1 ]
> [direct:transformOrderResponseItemToConsignmentRoute
> ] [ 12]
> [route2 ] [log5 ] [log
> ] [ 11]
> [ ] [GeneralExceptionLo] [log
> ] [ 3]
> Stacktrace
> ---------------------------------------------------------------------------------------------------------------------------------------
>
> org.apache.camel.TypeConversionException: Error during type conversion from
> type: java.lang.String to the required type: java.lang.String with value
> <OrderResponseItem xmlns="http://api.channeladvisor.com/webservices/"
> xmlns:q3="http://api.channeladvisor.com/datacontracts/orders"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:type="q3:OrderResponseDetailComplete">
> <q3:NumberOfMatches>3</q3:NumberOfMatches>
> <q3:OrderTimeGMT>2016-07-04T08:07:38.893</q3:OrderTimeGMT>
> <q3:LastUpdateDate>2016-07-04T08:07:40.217</q3:LastUpdateDate>
> <q3:TotalOrderAmount>357.0000</q3:TotalOrderAmount>
> <q3:OrderState>Active</q3:OrderState>
> <q3:DateCancelledGMT xsi:nil="true"/>
> <q3:OrderID>9564205</q3:OrderID>
> <q3:ClientOrderIdentifier>1000008</q3:ClientOrderIdentifier>
> <q3:SellerOrderID/>
> <q3:OrderStatus>
> <q3:CheckoutStatus>Completed</q3:CheckoutStatus>
>
> <q3:CheckoutDateGMT>2016-07-04T08:07:38.893</q3:CheckoutDateGMT>
> <q3:PaymentSt... [Body clipped after 1000 chars, total
> length is 14996] due java.lang.NullPointerException
> at
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.createTypeConversionException(BaseTypeConverterRegistry.java:629)
> ~[camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:150)
> ~[camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:41)
> ~[camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.builder.ExpressionBuilder$64.evaluate(ExpressionBuilder.java:1533)
> ~[camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36)
> ~[camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.processor.LogProcessor.process(LogProcessor.java:53)
> ~[camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468)
> [camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
> [camel-core-2.17.2.jar:2.17.2]
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)
> [camel-core-2.17.2.jar:2.17.2]
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
> [camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
> [camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)
> [camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)
> [camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468)
> [camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
> [camel-core-2.17.2.jar:2.17.2]
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)
> [camel-core-2.17.2.jar:2.17.2]
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
> [camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468)
> [camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
> [camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)
> [camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.processor.MulticastProcessor.doProcessParallel(MulticastProcessor.java:827)
> [camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.processor.MulticastProcessor.access$200(MulticastProcessor.java:85)
> [camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.processor.MulticastProcessor$1.call(MulticastProcessor.java:320)
> [camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.processor.MulticastProcessor$1.call(MulticastProcessor.java:305)
> [camel-core-2.17.2.jar:2.17.2]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_66]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> [?:1.8.0_66]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> [?:1.8.0_66]
> at java.lang.Thread.run(Thread.java:745) [?:1.8.0_66]
> Caused by: org.apache.camel.RuntimeCamelException:
> java.lang.NullPointerException
> at
> org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1690)
> ~[camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.util.ObjectHelper.invokeMethod(ObjectHelper.java:1285)
> ~[camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.impl.converter.InstanceMethodTypeConverter.convertTo(InstanceMethodTypeConverter.java:78)
> ~[camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.doConvertTo(BaseTypeConverterRegistry.java:306)
> ~[camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:133)
> ~[camel-core-2.17.2.jar:2.17.2]
> ... 26 more
> Caused by: java.lang.NullPointerException
> at
> org.xml.sax.helpers.NamespaceSupport$Context.declarePrefix(NamespaceSupport.java:628)
> ~[?:1.8.0_66]
> at
> org.xml.sax.helpers.NamespaceSupport.declarePrefix(NamespaceSupport.java:319)
> ~[?:1.8.0_66]
> at net.sf.saxon.dom.DOMSender.gatherNamespaces(DOMSender.java:304)
> ~[Saxon-HE-9.5.1-5.jar:?]
> at net.sf.saxon.dom.DOMSender.sendElement(DOMSender.java:125)
> ~[Saxon-HE-9.5.1-5.jar:?]
> at net.sf.saxon.dom.DOMSender.send(DOMSender.java:93)
> ~[Saxon-HE-9.5.1-5.jar:?]
> at net.sf.saxon.dom.DOMObjectModel.sendSource(DOMObjectModel.java:242)
> ~[Saxon-HE-9.5.1-5.jar:?]
> at net.sf.saxon.event.Sender.send(Sender.java:219)
> ~[Saxon-HE-9.5.1-5.jar:?]
> at
> net.sf.saxon.IdentityTransformer.transform(IdentityTransformer.java:46)
> ~[Saxon-HE-9.5.1-5.jar:?]
> at
> org.apache.camel.converter.jaxp.XmlConverter.toResult(XmlConverter.java:132)
> ~[camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.converter.jaxp.XmlConverter.toResult(XmlConverter.java:116)
> ~[camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.converter.jaxp.XmlConverter.toString(XmlConverter.java:238)
> ~[camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.converter.jaxp.XmlConverter.toString(XmlConverter.java:282)
> ~[camel-core-2.17.2.jar:2.17.2]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ~[?:1.8.0_66]
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> ~[?:1.8.0_66]
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[?:1.8.0_66]
> at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_66]
> at
> org.apache.camel.util.ObjectHelper.invokeMethod(ObjectHelper.java:1281)
> ~[camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.impl.converter.InstanceMethodTypeConverter.convertTo(InstanceMethodTypeConverter.java:78)
> ~[camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.doConvertTo(BaseTypeConverterRegistry.java:306)
> ~[camel-core-2.17.2.jar:2.17.2]
> at
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:133)
> ~[camel-core-2.17.2.jar:2.17.2]
> ... 26 more
> I created a test project (which I will try to attach) with a simple unit
> test. I found that if I remove camel-saxon then parallel appears to run fine
> (The unit test is not multithreaded but I can reach 20 runs without a
> problem). If I include camel-saxon the I start getting the problem above
> (usually within 8 runs of the unit test)
> I noticed that camel-saxon uses an old version of Saxon (Saxon-HE-9.5.1-5) so
> I overrode this with the latest version (9.7.0-7) but I still get the problem.
> I have tried against camel-saxon 2.17.2,2.17.1,2.17.0 and 2.16.3 (which
> required further Saxon fiddling).
> I originally raised this problem on the mailing list here:
> http://camel.465427.n5.nabble.com/Camel-XSLT-Saxon-not-thread-safe-tc5785086.html
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)