You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "Willem Jiang (JIRA)" <ji...@apache.org> on 2010/04/21 09:39:15 UTC

[jira] Commented: (CAMEL-2496) StreamCache/Splitter race condition

    [ https://issues.apache.org/activemq/browse/CAMEL-2496?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=58997#action_58997 ] 

Willem Jiang commented on CAMEL-2496:
-------------------------------------


After digging the code, I found the FileInputStreamCache is closed when the XPathBuilder.getDocument() is called, and the temp file is deleted, so you get the FileNotFoundException when the XPathBuilder wants to reset the InputStream.
I can also reproduce this issue in Camel 2.x.

To work around this issue, we should not use the FileInputStreamCache as it can't be reset after it is closed.


> StreamCache/Splitter race condition
> -----------------------------------
>
>                 Key: CAMEL-2496
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-2496
>             Project: Apache Camel
>          Issue Type: Bug
>    Affects Versions: 1.6.2
>            Reporter: Stan Lewis
>         Attachments: test-case.txt
>
>
> Attached patch introduces a test that shows the following symptom:
> org.apache.camel.RuntimeCamelException: java.io.FileNotFoundException: /var/folders/vC/vCA487MkHEeSaIu9LmlkrU+++TI/-Tmp-/camel-tmp-627613/cos3755307044377901165.tmp (No such file or directory)
> org.apache.camel.RuntimeCamelException: java.io.FileNotFoundException: /var/folders/vC/vCA487MkHEeSaIu9LmlkrU+++TI/-Tmp-/camel-tmp-627613/cos3755307044377901165.tmp (No such file or directory)
> 	at org.apache.camel.converter.stream.FileInputStreamCache.reset(FileInputStreamCache.java:52)
> 	at org.apache.camel.converter.stream.StreamCacheConverter$StreamSourceCache.reset(StreamCacheConverter.java:126)
> 	at org.apache.camel.util.MessageHelper.resetStreamCache(MessageHelper.java:105)
> 	at org.apache.camel.builder.xml.XPathBuilder.getDocument(XPathBuilder.java:548)
> 	at org.apache.camel.builder.xml.XPathBuilder.evaluateAs(XPathBuilder.java:428)
> 	at org.apache.camel.builder.xml.XPathBuilder.evaluate(XPathBuilder.java:118)
> 	at org.apache.camel.processor.Splitter.createProcessorExchangePairs(Splitter.java:72)
> 	at org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:155)
> 	at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:80)
> 	at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:189)
> 	at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:133)
> 	at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68)
> 	at org.apache.camel.processor.interceptor.StreamCachingInterceptor.proceed(StreamCachingInterceptor.java:87)
> 	at org.apache.camel.processor.interceptor.StreamCachingInterceptor.process(StreamCachingInterceptor.java:82)
> 	at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:52)
> 	at org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:72)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:637)
> I believe it must be a race condition when several threads are passing through the splitter, in the above case I'm using a seda queue with 5 threads.  Am logging this now as I'm not sure what time I'll have to investigate further this week.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.