On Fri, Nov 27, 2009 at 8:17 PM, shirazi <m...@farhad.eu> wrote: > > Sorry, my mistake. Using the latest build from trunk, it works just fine. I > just tried it with a couple of files of 3 and 4 Gigs size. >
Fantastic. Glad it worked as the code was inspired by your NIO code so I thought it was odd if it didnt work. Glad we got that fixed now and thanks for helping out. > Thanks, > -Farhad S. > > > Claus Ibsen-2 wrote: >> >> On Fri, Nov 27, 2009 at 4:18 PM, shirazi <m...@farhad.eu> wrote: >>> >>> Thanks Claus, >>> I just downloaded the new trunk, and I think there's a new bug in it. I >>> just >>> tried the file component with a couple of files around 3-400 MBs and it >>> works fine. As soon as I try it with a file around 3 Gigs, i get the >>> following exception (??!!): >>> >> >> That is odd as the stacktrace is off by -1. >> And you do a full svn up and a mvn clean install -Dtest=false to build >> all source from scratch? >> >> >> If you enable TRACE logging for: org.apache.camel.component.file >> >> You should see this log line when it uses the NIO stuff >> >> if (LOG.isTraceEnabled()) { >> LOG.trace("Using FileChannel to transfer from: " + in >> + " to: " + out); >> } >> >> >> I have committed a fix for the NPE in that stacktrace. But the was >> some other exception thrown that got lost. >> >> >> commited rev: 884894. >> >> >> >>> 16:13:48,830 ERROR [workflow] null while processing exchange: >>> Exchange[GenericFileMessage with file: GenericFile[/tmp/vw/cmore/tv5.ts]] >>> java.lang.NullPointerException >>> at >>> org.apache.camel.impl.OnExceptionRouteNode.getLabel(OnExceptionRouteNode.java:41) >>> at >>> org.apache.camel.processor.interceptor.DefaultTraceFormatter.getNodeMessage(DefaultTraceFormatter.java:233) >>> at >>> org.apache.camel.processor.interceptor.DefaultTraceFormatter.extractBreadCrumb(DefaultTraceFormatter.java:282) >>> at >>> org.apache.camel.processor.interceptor.DefaultTraceFormatter.format(DefaultTraceFormatter.java:55) >>> at >>> org.apache.camel.processor.interceptor.TraceInterceptor.format(TraceInterceptor.java:232) >>> at org.apache.camel.processor.Logger.logMessage(Logger.java:283) >>> at org.apache.camel.processor.Logger.process(Logger.java:166) >>> at >>> org.apache.camel.processor.interceptor.TraceInterceptor.logException(TraceInterceptor.java:325) >>> at >>> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:171) >>> at >>> org.apache.camel.processor.LoggingErrorHandler.process(LoggingErrorHandler.java:58) >>> at >>> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:206) >>> at >>> org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53) >>> at >>> org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:51) >>> 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:162) >>> at >>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67) >>> at >>> org.apache.camel.processor.LoggingErrorHandler.process(LoggingErrorHandler.java:58) >>> at >>> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:206) >>> 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.direct.DirectProducer.process(DirectProducer.java:45) >>> at >>> org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:97) >>> at >>> org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:95) >>> at >>> org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:146) >>> at >>> org.apache.camel.processor.SendProcessor.doProcess(SendProcessor.java:94) >>> at >>> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:82) >>> 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:162) >>> at >>> org.apache.camel.processor.LoggingErrorHandler.process(LoggingErrorHandler.java:58) >>> at >>> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:206) >>> at org.apache.camel.processor.Pipeline.process(Pipeline.java:74) >>> at >>> org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:56) >>> 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:162) >>> at >>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67) >>> at >>> org.apache.camel.processor.LoggingErrorHandler.process(LoggingErrorHandler.java:58) >>> at >>> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:206) >>> at >>> org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:54) >>> 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.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:201) >>> at >>> org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:122) >>> at >>> org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:95) >>> at >>> org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:108) >>> at >>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417) >>> at >>> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280) >>> at >>> java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135) >>> at >>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:65) >>> at >>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:142) >>> at >>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:166) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) >>> at java.lang.Thread.run(Thread.java:613) >>> >>> >>> >>> >>> Claus Ibsen-2 wrote: >>>> >>>> On Fri, Nov 27, 2009 at 2:34 PM, shirazi <m...@farhad.eu> wrote: >>>>> >>>>> Oh, sorry. that's right, it is 64 MB. and I tried with 16, 32, 64 and >>>>> 128 >>>>> MB. >>>>> I will try the buffer size option of the file-comp. to see if it solves >>>>> the >>>>> problem. >>>>> >>>> >>>> I have just committed the fix to camel trunk. >>>> >>>> The old code will still have the 2gb limit bug no matter what >>>> bufferSize you use. >>>> However you should try the latest code in 2.1 to see if that works for >>>> you. >>>> http://camel.apache.org/download.html >>>> >>>> >>>> >>>>> Thanks, >>>>> Farhad S. >>>>> >>>>> >>>>> Claus Ibsen-2 wrote: >>>>>> >>>>>> On Fri, Nov 27, 2009 at 2:26 PM, shirazi <m...@farhad.eu> wrote: >>>>>>> >>>>>>> That's probably the case. I've tried with different buffer sizes >>>>>>> (though >>>>>>> not >>>>>>> 0), from 16 to 128 KB. I got the best performance with buffer of >>>>>>> 64KB, >>>>>>> on >>>>>>> Linux Debian with 4 Gigs RAM, and files larger than 3 Gigs. >>>>>>> That would be great, if one could specify the buffer-size for the >>>>>>> "file" >>>>>>> component. >>>>>>> >>>>>> >>>>>> You buffer size was 64 * 1024 * 1024 which is 64 K * K = 64 MB. Or is >>>>>> there something that play tricks on me? >>>>>> >>>>>> The file component already have a bufferSize option with a default of >>>>>> 128kb >>>>>> http://camel.apache.org/file2.html >>>>>> >>>>>> So you can use that to set what you want to use. >>>>>> >>>>>> >>>>>> >>>>>>> -Farhad S. >>>>>>> >>>>>>> >>>>>>> Claus Ibsen-2 wrote: >>>>>>>> >>>>>>>> On Fri, Nov 27, 2009 at 2:00 PM, shirazi <m...@farhad.eu> wrote: >>>>>>>>> >>>>>>>>> Sure. I have attached the file. >>>>>>>>> Actually I use from->to components for transfering files and I >>>>>>>>> guess >>>>>>>>> it >>>>>>>>> copies the file, rather than moving. >>>>>>>>> >>>>>>>> >>>>>>>> Ah makes more sense for copying to leverage NIO. >>>>>>>> >>>>>>>> Camel does this also but I can see that it may hit that 2gb limit as >>>>>>>> it doesnt transfer in a loop using a lower buffer. >>>>>>>> >>>>>>>> It was doing it in a one liner >>>>>>>> in.transferTo(0, in.size(), out); >>>>>>>> >>>>>>>> I wonder if you really must do that in a loop to avoid any 2gb limit >>>>>>>> or the likes? >>>>>>>> >>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Farhad S. >>>>>>>>> http://old.nabble.com/file/p26542125/Nio.java Nio.java >>>>>>>>> >>>>>>>>> >>>>>>>>> Claus Ibsen-2 wrote: >>>>>>>>>> >>>>>>>>>> On Fri, Nov 27, 2009 at 1:37 PM, shirazi <m...@farhad.eu> wrote: >>>>>>>>>>> >>>>>>>>>>> Wau... thanks for that. I don't understand how I could miss it, >>>>>>>>>>> cause >>>>>>>>>>> i >>>>>>>>>>> searched a lot for such a feature. >>>>>>>>>>> >>>>>>>>>>> Another thing that I have experienced in 2.0, is that the "file" >>>>>>>>>>> component >>>>>>>>>>> is unable to move/copy files larger than 2Gigs, such large files >>>>>>>>>>> are >>>>>>>>>>> cut >>>>>>>>>>> around 2 Gigs limit. Now, I'm not sure if it has anything to do >>>>>>>>>>> with >>>>>>>>>>> the >>>>>>>>>>> OS >>>>>>>>>>> or the filesystems or what. I have seen it both in Linux (debian) >>>>>>>>>>> and >>>>>>>>>>> Mac >>>>>>>>>>> OS >>>>>>>>>>> X. And I don't understand either, why the file component does not >>>>>>>>>>> use >>>>>>>>>>> the >>>>>>>>>>> NIO api or at least we don't have an option to tell it use the >>>>>>>>>>> NIO >>>>>>>>>>> api >>>>>>>>>>> instead. >>>>>>>>>>> Anyway, for now I've solved the problem by using a smiple >>>>>>>>>>> component >>>>>>>>>>> instead >>>>>>>>>>> of the "file" comp. to move/copy files using the NIO api. It is >>>>>>>>>>> much >>>>>>>>>>> faster >>>>>>>>>>> and it has no problem with very large files. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> For move it uses java.io.File rename and are you saying its not >>>>>>>>>> optimized for the underlying OS? >>>>>>>>>> I would assume that it could move a 2gb file in no time if the >>>>>>>>>> file >>>>>>>>>> is >>>>>>>>>> on the same share. >>>>>>>>>> >>>>>>>>>> Can you share your code that you are using? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> Bests, >>>>>>>>>>> Farhad S. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Claus Ibsen-2 wrote: >>>>>>>>>>>> >>>>>>>>>>>> On Fri, Nov 27, 2009 at 1:12 PM, shirazi <m...@farhad.eu> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> Hi, >>>>>>>>>>>>> Ok, I guess I should rather provide an AggregationStrategy. >>>>>>>>>>>>> The reason why I use a timer is that when I use the ftp >>>>>>>>>>>>> endpoint, >>>>>>>>>>>>> it >>>>>>>>>>>>> starts >>>>>>>>>>>>> to fetch everything that is on the ftp in the first call and >>>>>>>>>>>>> that's >>>>>>>>>>>>> not >>>>>>>>>>>>> what >>>>>>>>>>>>> i want, because I'm processing files over 3 Gigs and there are >>>>>>>>>>>>> many >>>>>>>>>>>>> of >>>>>>>>>>>>> them. >>>>>>>>>>>>> Then I figured that by using a timer, i could have ftp to >>>>>>>>>>>>> download >>>>>>>>>>>>> one >>>>>>>>>>>>> file >>>>>>>>>>>>> at a time!! >>>>>>>>>>>>> What I basically need is to somehow tell the ftp, how many >>>>>>>>>>>>> files >>>>>>>>>>>>> I >>>>>>>>>>>>> want >>>>>>>>>>>>> to >>>>>>>>>>>>> fetch at a time. This is probably doable now in camel-2.1 by >>>>>>>>>>>>> using >>>>>>>>>>>>> the >>>>>>>>>>>>> "ThrottlingInflightRoutePolicy", which i havn't tried yet. >>>>>>>>>>>>> Do you have any suggestions? >>>>>>>>>>>> >>>>>>>>>>>> Yeah the FTP component extends the File component so you got all >>>>>>>>>>>> the >>>>>>>>>>>> options from the file component as well >>>>>>>>>>>> http://camel.apache.org/file2.html >>>>>>>>>>>> >>>>>>>>>>>> And there is a maxMessagesPerPoll you can use to tell how many >>>>>>>>>>>> files >>>>>>>>>>>> you want at most to poll. For example = 1 in your use. >>>>>>>>>>>> >>>>>>>>>>>> And that option is avail in 2.0 also. >>>>>>>>>>>> >>>>>>>>>>>> In fact all these are as they are batch polling consumers >>>>>>>>>>>> http://camel.apache.org/batch-consumer.html >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Bests, >>>>>>>>>>>>> Farhad S. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Claus Ibsen-2 wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> Hi >>>>>>>>>>>>>> >>>>>>>>>>>>>> BTW why are you using a timer -> ftp when the ftp have a build >>>>>>>>>>>>>> in >>>>>>>>>>>>>> timer? >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Fri, Nov 27, 2009 at 12:55 PM, shirazi <m...@farhad.eu> >>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>> Please consider the following route: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> from("timer://someTrigger?delay=30000&fixedRate=true&period=300000"). >>>>>>>>>>>>>>> pollEnrich("ftp://cmoreFtp?binary=true&localWorkDirectory=/tmp&idempotent=true&idempotentRepository=#caStreams", >>>>>>>>>>>>>>> 10000). >>>>>>>>>>>>>>> to("file:///tmp/vw/cmore?tempPrefix=.inprogress"); >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> The pollEnrich cast a NullPointerException in camel-2.0, if >>>>>>>>>>>>>>> there >>>>>>>>>>>>>>> is >>>>>>>>>>>>>>> nothing >>>>>>>>>>>>>>> to fetch from the ftp. I got rid of the exception by a >>>>>>>>>>>>>>> "try-catch(NullpointerExcpetion.class).stop()" around the >>>>>>>>>>>>>>> route. >>>>>>>>>>>>>>> Now >>>>>>>>>>>>>>> in >>>>>>>>>>>>>>> camel-2.1-SNAPSHOT, I get the following exception on the "to" >>>>>>>>>>>>>>> endpoint: >>>>>>>>>>>>>>> ================= >>>>>>>>>>>>>>> 12:37:06,899 INFO [Tracer] >>> --> >>>>>>>>>>>>>>> file:///tmp/vw/cmore?tempPrefix=.inprogress_, Pattern:InOnly, >>>>>>>>>>>>>>> Headers:{firedTime=Fri Nov 27 12:36:56 CET 2009}, >>>>>>>>>>>>>>> Exception:org.apache.camel.component.file.GenericFileOperationFailedException: >>>>>>>>>>>>>>> Cannot store file: >>>>>>>>>>>>>>> /tmp/vw/cmore/.inprogress_02216f38-8ffc-4aec-b638-27229d857075 >>>>>>>>>>>>>>> 12:37:06,899 INFO [Tracer] >>> --> >>>>>>>>>>>>>>> file:///tmp/vw/cmore?tempPrefix=.inprogress_, Pattern:InOnly, >>>>>>>>>>>>>>> Headers:{firedTime=Fri Nov 27 12:36:56 CET 2009}, >>>>>>>>>>>>>>> Exception:org.apache.camel.component.file.GenericFileOperationFailedException: >>>>>>>>>>>>>>> Cannot store file: >>>>>>>>>>>>>>> /tmp/vw/cmore/.inprogress_02216f38-8ffc-4aec-b638-27229d857075 >>>>>>>>>>>>>>> 12:37:06,899 ERROR [TimerConsumer] Cannot store file: >>>>>>>>>>>>>>> /tmp/vw/cmore/.inprogress_02216f38-8ffc-4aec-b638-27229d857075 >>>>>>>>>>>>>>> org.apache.camel.component.file.GenericFileOperationFailedException: >>>>>>>>>>>>>>> Cannot >>>>>>>>>>>>>>> store file: >>>>>>>>>>>>>>> /tmp/vw/cmore/.inprogress_02216f38-8ffc-4aec-b638-27229d857075 >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.component.file.FileOperations.storeFile(FileOperations.java:204) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.component.file.GenericFileProducer.writeFile(GenericFileProducer.java:184) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.component.file.GenericFileProducer.processExchange(GenericFileProducer.java:126) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.component.file.GenericFileProducer.process(GenericFileProducer.java:57) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:97) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:95) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:146) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.processor.SendProcessor.doProcess(SendProcessor.java:94) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:82) >>>>>>>>>>>>>>> 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:162) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:206) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.processor.Pipeline.process(Pipeline.java:74) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.processor.TryProcessor.process(TryProcessor.java:63) >>>>>>>>>>>>>>> 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:162) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:206) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:54) >>>>>>>>>>>>>>> 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:103) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:50) >>>>>>>>>>>>>>> at java.util.TimerThread.mainLoop(Timer.java:512) >>>>>>>>>>>>>>> at java.util.TimerThread.run(Timer.java:462) >>>>>>>>>>>>>>> Caused by: org.apache.camel.InvalidPayloadException: No body >>>>>>>>>>>>>>> available >>>>>>>>>>>>>>> of >>>>>>>>>>>>>>> type: java.io.InputStream on: Message: [Body is null]. Caused >>>>>>>>>>>>>>> by: >>>>>>>>>>>>>>> No >>>>>>>>>>>>>>> type >>>>>>>>>>>>>>> converter available to convert from type: null to the >>>>>>>>>>>>>>> required >>>>>>>>>>>>>>> type: >>>>>>>>>>>>>>> java.io.InputStream with value null on the exchange: >>>>>>>>>>>>>>> Exchange[Message: >>>>>>>>>>>>>>> [Body >>>>>>>>>>>>>>> is null]] >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.impl.MessageSupport.getMandatoryBody(MessageSupport.java:103) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.util.ExchangeHelper.getMandatoryInBody(ExchangeHelper.java:116) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.component.file.FileOperations.storeFile(FileOperations.java:198) >>>>>>>>>>>>>>> ... 29 more >>>>>>>>>>>>>>> Caused by: >>>>>>>>>>>>>>> org.apache.camel.NoTypeConversionAvailableException: >>>>>>>>>>>>>>> No >>>>>>>>>>>>>>> type >>>>>>>>>>>>>>> converter available to convert from type: null to the >>>>>>>>>>>>>>> required >>>>>>>>>>>>>>> type: >>>>>>>>>>>>>>> java.io.InputStream with value null >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.impl.converter.DefaultTypeConverter.mandatoryConvertTo(DefaultTypeConverter.java:126) >>>>>>>>>>>>>>> at >>>>>>>>>>>>>>> org.apache.camel.impl.MessageSupport.getMandatoryBody(MessageSupport.java:101) >>>>>>>>>>>>>>> ... 31 more >>>>>>>>>>>>>>> ============ >>>>>>>>>>>>>>> Now, I can remedy the situation by a try-catch block or an >>>>>>>>>>>>>>> interceptor, >>>>>>>>>>>>>>> but >>>>>>>>>>>>>>> in my opinion this should be considered a bug in camel and it >>>>>>>>>>>>>>> should >>>>>>>>>>>>>>> silently ignore if there was nothing to fetch from the ftp. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Bests, >>>>>>>>>>>>>>> Farhad Shiraz >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> View this message in context: >>>>>>>>>>>>>>> http://old.nabble.com/camel-casts-exception-when-there-is-nothing-to-fetch-from-the-ftp-endpoint-tp26541447p26541447.html >>>>>>>>>>>>>>> Sent from the Camel - Users mailing list archive at >>>>>>>>>>>>>>> Nabble.com. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> Claus Ibsen >>>>>>>>>>>>>> Apache Camel Committer >>>>>>>>>>>>>> >>>>>>>>>>>>>> Author of Camel in Action: http://www.manning.com/ibsen/ >>>>>>>>>>>>>> Open Source Integration: http://fusesource.com >>>>>>>>>>>>>> Blog: http://davsclaus.blogspot.com/ >>>>>>>>>>>>>> Twitter: http://twitter.com/davsclaus >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> View this message in context: >>>>>>>>>>>>> http://old.nabble.com/camel-casts-exception-when-there-is-nothing-to-fetch-from-the-ftp-endpoint-tp26541447p26541650.html >>>>>>>>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Claus Ibsen >>>>>>>>>>>> Apache Camel Committer >>>>>>>>>>>> >>>>>>>>>>>> Author of Camel in Action: http://www.manning.com/ibsen/ >>>>>>>>>>>> Open Source Integration: http://fusesource.com >>>>>>>>>>>> Blog: http://davsclaus.blogspot.com/ >>>>>>>>>>>> Twitter: http://twitter.com/davsclaus >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> View this message in context: >>>>>>>>>>> http://old.nabble.com/camel-casts-exception-when-there-is-nothing-to-fetch-from-the-ftp-endpoint-tp26541447p26541877.html >>>>>>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Claus Ibsen >>>>>>>>>> Apache Camel Committer >>>>>>>>>> >>>>>>>>>> Author of Camel in Action: http://www.manning.com/ibsen/ >>>>>>>>>> Open Source Integration: http://fusesource.com >>>>>>>>>> Blog: http://davsclaus.blogspot.com/ >>>>>>>>>> Twitter: http://twitter.com/davsclaus >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> View this message in context: >>>>>>>>> http://old.nabble.com/camel-casts-exception-when-there-is-nothing-to-fetch-from-the-ftp-endpoint-tp26541447p26542125.html >>>>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Claus Ibsen >>>>>>>> Apache Camel Committer >>>>>>>> >>>>>>>> Author of Camel in Action: http://www.manning.com/ibsen/ >>>>>>>> Open Source Integration: http://fusesource.com >>>>>>>> Blog: http://davsclaus.blogspot.com/ >>>>>>>> Twitter: http://twitter.com/davsclaus >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> View this message in context: >>>>>>> http://old.nabble.com/camel-casts-exception-when-there-is-nothing-to-fetch-from-the-ftp-endpoint-tp26541447p26542396.html >>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Claus Ibsen >>>>>> Apache Camel Committer >>>>>> >>>>>> Author of Camel in Action: http://www.manning.com/ibsen/ >>>>>> Open Source Integration: http://fusesource.com >>>>>> Blog: http://davsclaus.blogspot.com/ >>>>>> Twitter: http://twitter.com/davsclaus >>>>>> >>>>>> >>>>> >>>>> -- >>>>> View this message in context: >>>>> http://old.nabble.com/camel-casts-exception-when-there-is-nothing-to-fetch-from-the-ftp-endpoint-tp26541447p26542472.html >>>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> Claus Ibsen >>>> Apache Camel Committer >>>> >>>> Author of Camel in Action: http://www.manning.com/ibsen/ >>>> Open Source Integration: http://fusesource.com >>>> Blog: http://davsclaus.blogspot.com/ >>>> Twitter: http://twitter.com/davsclaus >>>> >>>> >>> >>> -- >>> View this message in context: >>> http://old.nabble.com/camel-casts-exception-when-there-is-nothing-to-fetch-from-the-ftp-endpoint-tp26541447p26543771.html >>> Sent from the Camel - Users mailing list archive at Nabble.com. >>> >>> >> >> >> >> -- >> Claus Ibsen >> Apache Camel Committer >> >> Author of Camel in Action: http://www.manning.com/ibsen/ >> Open Source Integration: http://fusesource.com >> Blog: http://davsclaus.blogspot.com/ >> Twitter: http://twitter.com/davsclaus >> >> > > -- > View this message in context: > http://old.nabble.com/camel-casts-exception-when-there-is-nothing-to-fetch-from-the-ftp-endpoint-tp26541447p26545371.html > Sent from the Camel - Users mailing list archive at Nabble.com. > > -- Claus Ibsen Apache Camel Committer Author of Camel in Action: http://www.manning.com/ibsen/ Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus