[ 
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.

Reply via email to