[
https://issues.apache.org/activemq/browse/CAMEL-2776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=59937#action_59937
]
Willem Jiang commented on CAMEL-2776:
-------------------------------------
@Claus,
I think user has the responsibility to close the stream that he don't want to
use.
Maybe we can address this issue by using HawtDB.
> Cached stream file deletion causing file not found errors
> ---------------------------------------------------------
>
> Key: CAMEL-2776
> URL: https://issues.apache.org/activemq/browse/CAMEL-2776
> Project: Apache Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 2.3.0
> Reporter: Roland Knight
> Assignee: Willem Jiang
> Fix For: 2.4.0, 2.5.0
>
>
> Cached streams larger than the threshold (64K by default) are almost
> impossible to work with since when a cached stream is closed, the cached file
> is deleted. This occurs as a side effect of converting the associated body to
> string which can occur frequently if tracing is turned on. The net result is
> file not found errors shown below. The only workaround is to increase the
> threshold to a large value to keep the body in memory.
> It seems that if stream caching is to be useful, the cached files should be
> kept in a map and cleaned up and the end of the route, rather than upon close.
> Work around (set threshold to 10M):
> camelContext.getProperties().put(CachedOutputStream.THRESHOLD,
> "10000000");
> Error without work around:
> 16:09:49.278 [main] ERROR o.a.c.c.t.TimerConsumer - Error processing
> exchange. Exchange[Message: [Body is instance of java.io.InputStream]].
> Caused by: [org.apache.camel.RuntimeCamelException -
> java.io.FileNotFoundException:
> C:\Users\ROLAND~1\AppData\Local\Temp\camel-tmp-594543\cos3643004935230268170.tmp
> (The system cannot find the file specified)]
> org.apache.camel.RuntimeCamelException: java.io.FileNotFoundException:
> C:\Users\ROLAND~1\AppData\Local\Temp\camel-tmp-594543\cos3643004935230268170.tmp
> (The system cannot find the file specified)
> at
> org.apache.camel.converter.stream.FileInputStreamCache.reset(FileInputStreamCache.java:65)
> at
> org.apache.camel.util.MessageHelper.resetStreamCache(MessageHelper.java:106)
> at
> org.apache.camel.processor.RedeliveryErrorHandler.deliverToFailureProcessor(RedeliveryErrorHandler.java:344)
> at
> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:111)
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:89)
> at
> org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:49)
> at
> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:228)
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:75)
> at
> org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:80)
> at
> org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.java:48)
> at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
> at
> org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:44)
> at
> org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:106)
> at
> org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:104)
> at
> org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:189)
> at
> org.apache.camel.processor.SendProcessor.doProcess(SendProcessor.java:103)
> at
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:87)
> at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
> at
> org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53)
> at
> org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:82)
> at
> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:173)
> at
> org.apache.camel.processor.interceptor.StreamCachingInterceptor.process(StreamCachingInterceptor.java:52)
> at
> org.apache.camel.processor.interceptor.StreamCachingInterceptor.process(StreamCachingInterceptor.java:52)
> at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
> at
> org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:185)
> at
> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:151)
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:89)
> at
> org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:49)
> at
> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:228)
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:75)
> at
> org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:70)
> at
> org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.java:48)
> at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
> at
> org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:102)
> at
> org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:49)
> at java.util.TimerThread.mainLoop(Timer.java:512)
> at java.util.TimerThread.run(Timer.java:462)
> Caused by: java.io.FileNotFoundException:
> C:\Users\ROLAND~1\AppData\Local\Temp\camel-tmp-594543\cos3643004935230268170.tmp
> (The system cannot find the file specified)
> at java.io.FileInputStream.open(Native Method)
> at java.io.FileInputStream.<init>(FileInputStream.java:106)
> at
> org.apache.camel.converter.stream.FileInputStreamCache.reset(FileInputStreamCache.java:63)
> ... 36 common frames omitted
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.