With TRUNCATED logs [2.1] We can see that *"inside processornewFile887" *is printed first at line 10 and then again at line 18
On Wed, Jan 3, 2018 at 8:39 PM, Bhuvan Gupta <bhuva...@gmail.com> wrote: > Hello, > > >>A typical problem is that your do some custom code where you read the > >>file or do something with a input stream you do not close properly. > In the sample project shared our processor is doing nothing with file. > > Here is the log attached. > Key Observations from log > [1] At end of the log I am printing the file which is handled twice. An > example is "newFile887" > [2] Also as soon as we enter the processor I print the > *"System.out.println("inside > processor"+fileName);"* > [2.1] We can see that *"inside processornewFile887" *is printed first at > line 7220 and then again at line8271 > [3] I tried it on 2.19.0 with java 1.8 > > Note : the issue happen in 2 out of 3 time > > > PFA: > [1] log file > [2] updated App.java with better sysouts > > > > > > > On Wed, Jan 3, 2018 at 8:19 PM, Bhuvan Gupta <bhuva...@gmail.com> wrote: > >> I am working more on it prove it. >> >> meanwhile issue video https://drive.google.com >> /file/d/1znGkVn2JtpFvtlUnwifPKCTWujAiFFPo/view >> See @00.05 >> >> On Wed, Jan 3, 2018 at 7:26 PM, Claus Ibsen <claus.ib...@gmail.com> >> wrote: >> >>> We cannot reproduce your problem. >>> >>> There can be several reasons why a file cannot be renamed, but >>> unfortunately the file api just returns a boolean if it cannot rename >>> a file. >>> A typical problem is that your do some custom code where you read the >>> file or do something with a input stream you do not close properly. >>> >>> Also using threads(1) does not really make sense. >>> >>> >>> >>> On Tue, Jan 2, 2018 at 6:02 AM, Bhuvan Gupta <bhuva...@gmail.com> wrote: >>> > Hello nice people, >>> > >>> > We are using camel 2.17 with java 1.7 in our sample project and we >>> defined >>> > our route as: >>> > >>> > from("file:stageDummy") >>> > .threads(1) >>> > .process(myProcess); >>> > >>> > We first add 1000 file in stageDummy folder, then we run the code >>> and we >>> > get exception as below >>> > >>> > >>> > org.apache.camel.component.file.GenericFileOperationFailedException: >>> Cannot >>> > rename file: GenericFile[newFile319] to: GenericFile[.camel/newFile319] >>> > at >>> > org.apache.camel.component.file.strategy.GenericFileProcessS >>> trategySupport.renameFile(GenericFileProcessStrategySupport.java:115) >>> > at >>> > org.apache.camel.component.file.strategy.GenericFileRenamePr >>> ocessStrategy.commit(GenericFileRenameProcessStrategy.java:88) >>> > at >>> > org.apache.camel.component.file.GenericFileOnCompletion.proc >>> essStrategyCommit(GenericFileOnCompletion.java:127) >>> > at >>> > org.apache.camel.component.file.GenericFileOnCompletion.onCo >>> mpletion(GenericFileOnCompletion.java:83) >>> > at >>> > org.apache.camel.component.file.GenericFileOnCompletion.onCo >>> mplete(GenericFileOnCompletion.java:57) >>> > at >>> > org.apache.camel.util.UnitOfWorkHelper.doneSynchronizations( >>> UnitOfWorkHelper.java:104) >>> > at org.apache.camel.impl.DefaultUnitOfWork.done(DefaultUnitOfWo >>> rk.java:229) >>> > at org.apache.camel.util.UnitOfWorkHelper.doneUow(UnitOfWorkHel >>> per.java:65) >>> > at >>> > org.apache.camel.processor.CamelInternalProcessor$UnitOfWork >>> ProcessorAdvice.after(CamelInternalProcessor.java:654) >>> > at >>> > org.apache.camel.processor.CamelInternalProcessor$UnitOfWork >>> ProcessorAdvice.after(CamelInternalProcessor.java:609) >>> > at >>> > org.apache.camel.processor.CamelInternalProcessor$InternalCa >>> llback.done(CamelInternalProcessor.java:239) >>> > at >>> > org.apache.camel.processor.CamelInternalProcessor$InternalCa >>> llback.done(CamelInternalProcessor.java:250) >>> > at >>> > org.apache.camel.processor.RedeliveryErrorHandler$1.done(Red >>> eliveryErrorHandler.java:480) >>> > at >>> > org.apache.camel.management.InstrumentationProcessor$1.done( >>> InstrumentationProcessor.java:86) >>> > at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:148) >>> > at >>> > org.apache.camel.processor.ThreadsProcessor$ProcessCall.run( >>> ThreadsProcessor.java:85) >>> > at java.util.concurrent.Executors$RunnableAdapter.call(Executor >>> s.java:471) >>> > at java.util.concurrent.FutureTask.run(FutureTask.java:262) >>> > at >>> > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool >>> Executor.java:1145) >>> > at >>> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo >>> lExecutor.java:615) >>> > at java.lang.Thread.run(Thread.java:745) >>> > >>> > As per our understanding camel picks up the file from the mentioned >>> > directory i.e in my case-stageDummy and processed by process-myProcess >>> > and moves it to .camel sub folder.We noticed that if we were having >>> more >>> > than or around 1000 files in the folder -stageDummy ,there were some >>> > exceptions >>> > thrown >>> > >>> > This exception is thrown randomly for n number of files,where n changes >>> > everytime we execute our main.Note that we were not trying to access >>> the >>> > exchange >>> > instead we kept our process simple.We could see that if there are 1000 >>> files >>> > in our folder then the processor is getting called 1000+x times ,where >>> x >>> > changes everytime example it gets called 1024 times,and we could see >>> that >>> > camel is trying to process these x number of files again >>> > >>> > We are attaching the Main class as well as the project zip >>> > >>> > AND HAPPY NEW YEAR. >>> > >>> > hoping to resolve it soon >>> > >>> > >>> > >>> > >>> >>> >>> >>> -- >>> Claus Ibsen >>> ----------------- >>> http://davsclaus.com @davsclaus >>> Camel in Action 2: https://www.manning.com/ibsen2 >>> >> >> >