You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "David Bennison (JIRA)" <ji...@apache.org> on 2016/08/07 15:25:20 UTC

[jira] [Created] (CAMEL-10225) Camel-Saxon is not thread safe

David Bennison created CAMEL-10225:
--------------------------------------

             Summary: 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.17.2, 2.17.1, 2.17.0, 2.16.3
         Environment: Java 1.8.0_66-b17 Ubuntu 15.10 and Windows 10
            Reporter: David Bennison





We preform 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.3.4#6332)