Return-Path: Delivered-To: apmail-camel-users-archive@www.apache.org Received: (qmail 72914 invoked from network); 27 Nov 2009 15:28:00 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 27 Nov 2009 15:28:00 -0000 Received: (qmail 51582 invoked by uid 500); 27 Nov 2009 15:27:59 -0000 Delivered-To: apmail-camel-users-archive@camel.apache.org Received: (qmail 51550 invoked by uid 500); 27 Nov 2009 15:27:59 -0000 Mailing-List: contact users-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@camel.apache.org Delivered-To: mailing list users@camel.apache.org Received: (qmail 51540 invoked by uid 99); 27 Nov 2009 15:27:59 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 27 Nov 2009 15:27:59 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of claus.ibsen@gmail.com designates 209.85.218.211 as permitted sender) Received: from [209.85.218.211] (HELO mail-bw0-f211.google.com) (209.85.218.211) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 27 Nov 2009 15:27:47 +0000 Received: by bwz3 with SMTP id 3so1461056bwz.36 for ; Fri, 27 Nov 2009 07:27:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :from:date:message-id:subject:to:content-type :content-transfer-encoding; bh=TE15EvwAWNp9JTwMopQNS2E4MkZX0jOTfQ/M5BN3TNI=; b=dSbz6ZFcPoK80ed7wd3EZ2Lf5EPwMUhqXwl2igPLPoxZoK3r8zsbb/QYUU67f7qUa0 5/4/hofwwDNSowv7vjXNrPkhwADXvsjqng+jgVh24qjNue8hH0o7qj+CFWZmcpLDiCjz +UH19r1xFwXcNodlvCySn4UxIx6Zuc+CAAhWM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type:content-transfer-encoding; b=KfwqIJK8B2oSJJN3GRaQXZvL0UtM5qRmvf5WUpteVdYp2UNaBrevP3a0cBGufxXLRR hfwmc+PGaTSrjfD/CuWAbtSf0L1SteqoX75nLOBBnZx+g1qDIl9XwLx5FZPpYKIEGMUJ xI6mXxAc5xT87fOxNrMMUSje8JouXctn1vSHY= MIME-Version: 1.0 Received: by 10.204.32.1 with SMTP id a1mr1184456bkd.191.1259335647302; Fri, 27 Nov 2009 07:27:27 -0800 (PST) In-Reply-To: <26543771.post@talk.nabble.com> References: <26541447.post@talk.nabble.com> <26541877.post@talk.nabble.com> <5380c69c0911270441x28348126v2638fb6a2cb74375@mail.gmail.com> <26542125.post@talk.nabble.com> <5380c69c0911270514s13a3d540lb2cf1aac8bed83ba@mail.gmail.com> <26542396.post@talk.nabble.com> <5380c69c0911270530i15b68972va02a9a51241e27a8@mail.gmail.com> <26542472.post@talk.nabble.com> <5380c69c0911270548gccd0ac9l5ab07f4a6bf6eda9@mail.gmail.com> <26543771.post@talk.nabble.com> From: Claus Ibsen Date: Fri, 27 Nov 2009 16:27:07 +0100 Message-ID: <5380c69c0911270727h4b25d1fck115aeb90b5f6aedc@mail.gmail.com> Subject: Re: camel casts exception when there is nothing to fetch from the ftp endpoint To: users@camel.apache.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Virus-Checked: Checked by ClamAV on apache.org On Fri, Nov 27, 2009 at 4:18 PM, shirazi wrote: > > Thanks Claus, > I just downloaded the new trunk, and I think there's a new bug in it. I j= ust > 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=3Dfalse 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 > =A0 =A0 =A0 =A0at > org.apache.camel.impl.OnExceptionRouteNode.getLabel(OnExceptionRouteNode.= java:41) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.interceptor.DefaultTraceFormatter.getNodeMessa= ge(DefaultTraceFormatter.java:233) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.interceptor.DefaultTraceFormatter.extractBread= Crumb(DefaultTraceFormatter.java:282) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.interceptor.DefaultTraceFormatter.format(Defau= ltTraceFormatter.java:55) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.interceptor.TraceInterceptor.format(TraceInter= ceptor.java:232) > =A0 =A0 =A0 =A0at org.apache.camel.processor.Logger.logMessage(Logger.jav= a:283) > =A0 =A0 =A0 =A0at org.apache.camel.processor.Logger.process(Logger.java:1= 66) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.interceptor.TraceInterceptor.logException(Trac= eInterceptor.java:325) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInte= rceptor.java:171) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.LoggingErrorHandler.process(LoggingErrorHandle= r.java:58) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:206= ) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcesso= r.java:53) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:5= 1) > =A0 =A0 =A0 =A0at > org.apache.camel.management.InstrumentationProcessor.process(Instrumentat= ionProcessor.java:67) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcesso= r.java:53) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.ja= va:82) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInte= rceptor.java:162) > =A0 =A0 =A0 =A0at > org.apache.camel.management.InstrumentationProcessor.process(Instrumentat= ionProcessor.java:67) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.LoggingErrorHandler.process(LoggingErrorHandle= r.java:58) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:206= ) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProc= essor.java:70) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.ja= va:48) > =A0 =A0 =A0 =A0at > org.apache.camel.management.InstrumentationProcessor.process(Instrumentat= ionProcessor.java:67) > =A0 =A0 =A0 =A0at > org.apache.camel.component.direct.DirectProducer.process(DirectProducer.j= ava:45) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.jav= a:97) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.jav= a:95) > =A0 =A0 =A0 =A0at org.apache.camel.impl.ProducerCache.doInProducer(Produc= erCache.java:146) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.SendProcessor.doProcess(SendProcessor.java:94) > =A0 =A0 =A0 =A0at org.apache.camel.processor.SendProcessor.process(SendPr= ocessor.java:82) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcesso= r.java:53) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.ja= va:82) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInte= rceptor.java:162) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.LoggingErrorHandler.process(LoggingErrorHandle= r.java:58) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:206= ) > =A0 =A0 =A0 =A0at org.apache.camel.processor.Pipeline.process(Pipeline.ja= va:74) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:5= 6) > =A0 =A0 =A0 =A0at > org.apache.camel.management.InstrumentationProcessor.process(Instrumentat= ionProcessor.java:67) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcesso= r.java:53) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.ja= va:82) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInte= rceptor.java:162) > =A0 =A0 =A0 =A0at > org.apache.camel.management.InstrumentationProcessor.process(Instrumentat= ionProcessor.java:67) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.LoggingErrorHandler.process(LoggingErrorHandle= r.java:58) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:206= ) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProc= essor.java:54) > =A0 =A0 =A0 =A0at > org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.ja= va:48) > =A0 =A0 =A0 =A0at > org.apache.camel.management.InstrumentationProcessor.process(Instrumentat= ionProcessor.java:67) > =A0 =A0 =A0 =A0at > org.apache.camel.component.file.GenericFileConsumer.processExchange(Gener= icFileConsumer.java:201) > =A0 =A0 =A0 =A0at > org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericF= ileConsumer.java:122) > =A0 =A0 =A0 =A0at > org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsu= mer.java:95) > =A0 =A0 =A0 =A0at > org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.jav= a:108) > =A0 =A0 =A0 =A0at java.util.concurrent.Executors$RunnableAdapter.call(Exe= cutors.java:417) > =A0 =A0 =A0 =A0at > java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280= ) > =A0 =A0 =A0 =A0at java.util.concurrent.FutureTask.runAndReset(FutureTask.= java:135) > =A0 =A0 =A0 =A0at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.acce= ss$101(ScheduledThreadPoolExecutor.java:65) > =A0 =A0 =A0 =A0at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runP= eriodic(ScheduledThreadPoolExecutor.java:142) > =A0 =A0 =A0 =A0at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(= ScheduledThreadPoolExecutor.java:166) > =A0 =A0 =A0 =A0at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor= .java:650) > =A0 =A0 =A0 =A0at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.jav= a:675) > =A0 =A0 =A0 =A0at java.lang.Thread.run(Thread.java:613) > > > > > Claus Ibsen-2 wrote: >> >> On Fri, Nov 27, 2009 at 2:34 PM, shirazi wrote: >>> >>> Oh, sorry. that's right, it is 64 MB. and I tried with 16, 32, 64 and 1= 28 >>> 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 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 =3D 64 MB. Or i= s >>>> 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 wrote: >>>>>>> >>>>>>> Sure. I have attached the file. >>>>>>> Actually I use from->to components for transfering files and I gues= s >>>>>>> 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 >>>>>> =A0 =A0 =A0 =A0 =A0 =A0 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 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 NI= O >>>>>>>>> api >>>>>>>>> instead. >>>>>>>>> Anyway, for now I've solved the problem by using a smiple compone= nt >>>>>>>>> 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 fil= e >>>>>>>> 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 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 endpoin= t, >>>>>>>>>>> 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 file= s >>>>>>>>>>> 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 =3D 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 wrote= : >>>>>>>>>>>>> >>>>>>>>>>>>> Hi, >>>>>>>>>>>>> Please consider the following route: >>>>>>>>>>>>> >>>>>>>>>>>>> from("timer://someTrigger?delay=3D30000&fixedRate=3Dtrue&peri= od=3D300000"). >>>>>>>>>>>>> pollEnrich("ftp://cmoreFtp?binary=3Dtrue&localWorkDirectory= =3D/tmp&idempotent=3Dtrue&idempotentRepository=3D#caStreams", >>>>>>>>>>>>> 10000). >>>>>>>>>>>>> to("file:///tmp/vw/cmore?tempPrefix=3D.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: >>>>>>>>>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>>>>>>>>>> 12:37:06,899 INFO =A0[Tracer] >>> =A0--> >>>>>>>>>>>>> file:///tmp/vw/cmore?tempPrefix=3D.inprogress_, Pattern:InOnl= y, >>>>>>>>>>>>> Headers:{firedTime=3DFri Nov 27 12:36:56 CET 2009}, >>>>>>>>>>>>> Exception:org.apache.camel.component.file.GenericFileOperatio= nFailedException: >>>>>>>>>>>>> Cannot store file: >>>>>>>>>>>>> /tmp/vw/cmore/.inprogress_02216f38-8ffc-4aec-b638-27229d85707= 5 >>>>>>>>>>>>> 12:37:06,899 INFO =A0[Tracer] >>> =A0--> >>>>>>>>>>>>> file:///tmp/vw/cmore?tempPrefix=3D.inprogress_, Pattern:InOnl= y, >>>>>>>>>>>>> Headers:{firedTime=3DFri Nov 27 12:36:56 CET 2009}, >>>>>>>>>>>>> Exception:org.apache.camel.component.file.GenericFileOperatio= nFailedException: >>>>>>>>>>>>> Cannot store file: >>>>>>>>>>>>> /tmp/vw/cmore/.inprogress_02216f38-8ffc-4aec-b638-27229d85707= 5 >>>>>>>>>>>>> 12:37:06,899 ERROR [TimerConsumer] Cannot store file: >>>>>>>>>>>>> /tmp/vw/cmore/.inprogress_02216f38-8ffc-4aec-b638-27229d85707= 5 >>>>>>>>>>>>> org.apache.camel.component.file.GenericFileOperationFailedExc= eption: >>>>>>>>>>>>> Cannot >>>>>>>>>>>>> store file: >>>>>>>>>>>>> /tmp/vw/cmore/.inprogress_02216f38-8ffc-4aec-b638-27229d85707= 5 >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.component.file.FileOperations.storeFile(File= Operations.java:204) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.component.file.GenericFileProducer.writeFile= (GenericFileProducer.java:184) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.component.file.GenericFileProducer.processEx= change(GenericFileProducer.java:126) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.component.file.GenericFileProducer.process(G= enericFileProducer.java:57) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.processor.SendProcessor$1.doInProducer(SendP= rocessor.java:97) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.processor.SendProcessor$1.doInProducer(SendP= rocessor.java:95) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.impl.ProducerCache.doInProducer(ProducerCach= e.java:146) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.processor.SendProcessor.doProcess(SendProces= sor.java:94) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.processor.SendProcessor.process(SendProcesso= r.java:82) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.management.InstrumentationProcessor.process(= InstrumentationProcessor.java:67) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.processor.DelegateProcessor.processNext(Dele= gateProcessor.java:53) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.processor.DelegateProcessor.proceed(Delegate= Processor.java:82) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.processor.interceptor.TraceInterceptor.proce= ss(TraceInterceptor.java:162) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.management.InstrumentationProcessor.process(= InstrumentationProcessor.java:67) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.processor.DefaultChannel.process(DefaultChan= nel.java:206) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.processor.Pipeline.process(Pipeline.java:74) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.processor.TryProcessor.process(TryProcessor.= java:63) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.management.InstrumentationProcessor.process(= InstrumentationProcessor.java:67) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.processor.DelegateProcessor.processNext(Dele= gateProcessor.java:53) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.processor.DelegateProcessor.proceed(Delegate= Processor.java:82) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.processor.interceptor.TraceInterceptor.proce= ss(TraceInterceptor.java:162) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.management.InstrumentationProcessor.process(= InstrumentationProcessor.java:67) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.processor.DefaultChannel.process(DefaultChan= nel.java:206) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.processor.UnitOfWorkProcessor.processNext(Un= itOfWorkProcessor.java:54) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.processor.DelegateProcessor.process(Delegate= Processor.java:48) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.management.InstrumentationProcessor.process(= InstrumentationProcessor.java:67) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.component.timer.TimerConsumer.sendTimerExcha= nge(TimerConsumer.java:103) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.component.timer.TimerConsumer$1.run(TimerCon= sumer.java:50) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at java.util.TimerThread.mainLoop(Timer.java:5= 12) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at 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 require= d >>>>>>>>>>>>> type: >>>>>>>>>>>>> java.io.InputStream with value null on the exchange: >>>>>>>>>>>>> Exchange[Message: >>>>>>>>>>>>> [Body >>>>>>>>>>>>> is null]] >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.impl.MessageSupport.getMandatoryBody(Message= Support.java:103) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.util.ExchangeHelper.getMandatoryInBody(Excha= ngeHelper.java:116) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.component.file.FileOperations.storeFile(File= Operations.java:198) >>>>>>>>>>>>> =A0 =A0 =A0 =A0... 29 more >>>>>>>>>>>>> Caused by: org.apache.camel.NoTypeConversionAvailableExceptio= n: >>>>>>>>>>>>> No >>>>>>>>>>>>> type >>>>>>>>>>>>> converter available to convert from type: null to the require= d >>>>>>>>>>>>> type: >>>>>>>>>>>>> java.io.InputStream with value null >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.impl.converter.DefaultTypeConverter.mandator= yConvertTo(DefaultTypeConverter.java:126) >>>>>>>>>>>>> =A0 =A0 =A0 =A0at >>>>>>>>>>>>> org.apache.camel.impl.MessageSupport.getMandatoryBody(Message= Support.java:101) >>>>>>>>>>>>> =A0 =A0 =A0 =A0... 31 more >>>>>>>>>>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>>>>>>>>>> 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-not= hing-to-fetch-from-the-ftp-endpoint-tp26541447p26541447.html >>>>>>>>>>>>> Sent from the Camel - Users mailing list archive at Nabble.co= m. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> 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-nothi= ng-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-t= o-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-fe= tch-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.h= tml > Sent from the Camel - Users mailing list archive at Nabble.com. > > --=20 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