We have stream caching enabled on the context.

@Override
    protected void setupCamelContext(CamelContext camelContext) {
        camelContext.setNameStrategy(new 
ExplicitCamelContextNameStrategy(applicationId));
        camelContext.setTracing(isTraceOn);
        camelContext.setUseMDCLogging(isMdcOn);
        camelContext.setStreamCaching(true);
    }


________________________________
From: Claus Ibsen-2 [via Camel] <ml-node+s465427n5785176...@n5.nabble.com>
Sent: 16 July 2016 09:03:30
To: David Bennison
Subject: Re: Camel XSLT/Saxon not thread safe?

Try enabling stream caching, or convert the payload to String after
the CXF call.


On Wed, Jul 13, 2016 at 3:06 PM, El Bennitto
<[hidden email]</user/SendEmail.jtp?type=node&node=5785176&i=0>> wrote:

> In our route we receive a response from a web service and then split the
> response using XPATH. In each split route we transform the XML before
> posting it off to another web service. We are not setting any additional
> configurations on the XSLT URI other than saxon=true.
>
> Eg:-
>         ....
>
>         from("direct:mainRoute")
>         .to("cxf://http://first-webservice.com...";)
>
> .split(namespaces.xpath("/xpath/expression")).parallelProcessing(true)
>             .to("direct:splitRoute")
>         .end()
>         .end();
>
>         from("direct:splitRoute")
>         .to("xslt:/xslt/stylesheet.xsl?saxon=true")
>         .to(cxf://http://second-webservice.com...";)
>         .end();
>
> Running this single threaded works fine but when we set the split to run in
> parrallel we  get  unexpected results from the XSLT transformations:-
>
>
> <custom5
> xsi:nil="true"/>SKU10.00009443122false1DIRECT_SALE4vt-bt45-5bt45Moleskin
> Slippersfanny.valette@france.com04707509500.00000.00000.00000.00000.00000.0000Ship7ParisLondonfalse0<custom7
> xsi:nil="true"/>
>                <custom8 xsi:nil="true"/>
>
> Where the XSLT is :-
> <xsl:template
> match="q1:ShoppingCart/q1:LineItemSKUList/q1:OrderLineItemItem"
> mode="salesSourceId">
>         <xsl:if test="position() &lt; 2">
>             <custom6><xsl:value-of select="q1:SalesSourceID" /></custom6>
>         </xsl:if>
> </xsl:template>
>
> If I remove the above XSLT  then we don't get any issues but I am concerned
> that this is just curing the symptom and not the cause.
> It looks like it is merging data from two different split responses as
> London is only in one reponse and some of the other information
> ([hidden email]</user/SendEmail.jtp?type=node&node=5785176&i=1>) is from 
> another.
>
>
> Sometimes we also get a NullPointerException:-
>
>  Error processing route: org.apache.camel.TypeConversionException: Error
> during type conversion from type: java.lang.String to the required type:
> java.lang.String with value [OrderResponseItem: null] due
> java.lang.NullPointerException
>         at
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.createTypeConversionException(BaseTypeConverterRegistry.java:629)
>         at
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:150)
>         at
> org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:41)
>         at
> org.apache.camel.builder.ExpressionBuilder$64.evaluate(ExpressionBuilder.java:1533)
>         at
> org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36)
>         at 
> org.apache.camel.processor.LogProcessor.process(LogProcessor.java:53)
>         at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468)
>         at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
>         at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
>         at
> org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)
>         at 
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)
>         at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468)
>         at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
>         at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468)
>         at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)
>         at
> org.apache.camel.processor.MulticastProcessor.doProcessParallel(MulticastProcessor.java:827)
>         at
> org.apache.camel.processor.MulticastProcessor.access$200(MulticastProcessor.java:85)
>         at
> org.apache.camel.processor.MulticastProcessor$1.call(MulticastProcessor.java:320)
>         at
> org.apache.camel.processor.MulticastProcessor$1.call(MulticastProcessor.java:305)
>         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:745)
> Caused by: org.apache.camel.RuntimeCamelException:
> java.lang.NullPointerException
>         at
> org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1690)
>         at 
> org.apache.camel.util.ObjectHelper.invokeMethod(ObjectHelper.java:1285)
>         at
> org.apache.camel.impl.converter.InstanceMethodTypeConverter.convertTo(InstanceMethodTypeConverter.java:78)
>         at
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.doConvertTo(BaseTypeConverterRegistry.java:306)
>         at
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:133)
>         ... 24 more
> Caused by: java.lang.NullPointerException
>         at
> com.sun.org.apache.xerces.internal.dom.ParentNode.nodeListItem(ParentNode.java:786)
>         at
> com.sun.org.apache.xerces.internal.dom.ParentNode.item(ParentNode.java:800)
>         at net.sf.saxon.dom.DOMSender.walkNode(DOMSender.java:199)
>         at net.sf.saxon.dom.DOMSender.outputElement(DOMSender.java:286)
>         at net.sf.saxon.dom.DOMSender.walkNode(DOMSender.java:209)
>         at net.sf.saxon.dom.DOMSender.outputElement(DOMSender.java:286)
>         at net.sf.saxon.dom.DOMSender.walkNode(DOMSender.java:209)
>         at net.sf.saxon.dom.DOMSender.outputElement(DOMSender.java:286)
>         at net.sf.saxon.dom.DOMSender.walkNode(DOMSender.java:209)
>         at net.sf.saxon.dom.DOMSender.outputElement(DOMSender.java:286)
>         at net.sf.saxon.dom.DOMSender.sendElement(DOMSender.java:154)
>         at net.sf.saxon.dom.DOMSender.send(DOMSender.java:99)
>         at net.sf.saxon.dom.DOMObjectModel.sendSource(DOMObjectModel.java:273)
>         at net.sf.saxon.event.Sender.send(Sender.java:226)
>         at
> net.sf.saxon.jaxp.IdentityTransformer.transform(IdentityTransformer.java:374)
>         at
> org.apache.camel.converter.jaxp.XmlConverter.toResult(XmlConverter.java:132)
>         at
> org.apache.camel.converter.jaxp.XmlConverter.toResult(XmlConverter.java:116)
>         at
> org.apache.camel.converter.jaxp.XmlConverter.toString(XmlConverter.java:238)
>         at
> org.apache.camel.converter.jaxp.XmlConverter.toString(XmlConverter.java:282)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:497)
>         at 
> org.apache.camel.util.ObjectHelper.invokeMethod(ObjectHelper.java:1281)
>
>
>
>
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/Camel-XSLT-Saxon-not-thread-safe-tp5785086.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



--
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2


________________________________
If you reply to this email, your message will be added to the discussion below:
http://camel.465427.n5.nabble.com/Camel-XSLT-Saxon-not-thread-safe-tp5785086p5785176.html
To unsubscribe from Camel XSLT/Saxon not thread safe?, click 
here<http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=5785086&code=ZGF2aWQuYmVubmlzb25AbWV0YXBhY2suY29tfDU3ODUwODZ8LTE1MzYzMTYzMDM=>.
NAML<http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>




--
View this message in context: 
http://camel.465427.n5.nabble.com/Camel-XSLT-Saxon-not-thread-safe-tp5785086p5785204.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to