Hi,

I have a Camel flow which seems to be experimenting concurrency issues with
the camel-validation component. This flow is invoked twice in parallel by a
splitter. 

It seems like the camel-validation component lazily-loads the XSD, when the
first request comes in.
As a consequence, when two simultaneous requests are received, it attempts
to load the XSD twice at the same time, possibly using the same
SchemaFactory, which may not be thread-safe.

Any ideas on how to tell Camel to load the XSD on initialization of the
flow, instead of on the first request?

Many thanks!

---------------------------

Dump of the stack trace:

10:38:20,860 | ERROR - org.apache.camel.processor.DeadLetterChannel -
org.apache.camel.processor.Logger - Failed delivery for exchangeId:
ID-ATOS-B624
E47AF0/3211-1240562892751/0-11. On delivery attempt: 0 caught:
org.xml.sax.SAXException: FWK005 parse may not be called while parsing.
org.xml.sax.SAXException: FWK005 parse may not be called while parsing.
        at
com.sun.org.apache.xerces.internal.jaxp.validation.Util.toSAXException(Util.java:62)
        at
com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema(XMLSchemaFactory.java:214)
        at
javax.xml.validation.SchemaFactory.newSchema(SchemaFactory.java:594)
        at
org.apache.camel.processor.validation.ValidatingProcessor.createSchema(ValidatingProcessor.java:204)
        at
org.apache.camel.processor.validation.ValidatingProcessor.getSchema(ValidatingProcessor.java:118)
        at
org.apache.camel.processor.validation.ValidatingProcessor.process(ValidatingProcessor.java:54)
        at
org.apache.camel.impl.ProcessorEndpoint.onExchange(ProcessorEndpoint.java:92)
        at
org.apache.camel.impl.ProcessorEndpoint$1.process(ProcessorEndpoint.java:66)
        at
org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:43)
        at
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:75)
        at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:57)
        at
org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:155)
        at
org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:91)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:85)
        at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:57)
-- 
View this message in context: 
http://www.nabble.com/Concurrency-Issue-with-camel-validation-tp23213294p23213294.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to