Uploaded image for project: 'FUSE Mediation Router'
  1. FUSE Mediation Router
  2. MR-317

StreamCache/Splitter race condition

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 2.4.0-fuse-00-00
    • 1.6.2.1-fuse
    • None
    • None

      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. CAMEL-2496 contains the unit test that reproduces the problem.

            willem.jiang Willem Jiang (Inactive)
            stlewis_2 Stan Lewis
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: