I think we fixed an issue in Camel 2.12.0 which could be related to this. Can you give it a try? Camel 2.12.0 was released one day ago...
Best, Christian ----------------- Software Integration Specialist Apache Camel committer: https://camel.apache.org/team V.P. Apache Camel: https://www.apache.org/foundation/ Apache Member: https://www.apache.org/foundation/members.html https://www.linkedin.com/pub/christian-mueller/11/551/642 On Thu, Sep 5, 2013 at 7:34 PM, bocamel <johnz...@gmail.com> wrote: > I ran into a similar problem. My use case is slightly different and I am > using Camel 2.11.1 and JDK 1.7. But the result is that Camel cannot delete > the file from the input folder and keeps processing it indefinitely. > > I have two routes. The first route reads in XML files from a directory > then > puts them on SEDA. The second route retrieves the files from SEDA and sends > them to a web services (CXF). > > <camel:route id="CustomerXmlFileIn" > > <camel:from uri="file:/xmlInput" /> > <camel:to uri="seda:processCustomerInput" /> > </camel:route> > > and > > <camel:route id="ProcessCustomerMessage" > errorHandlerRef="DeadLetterErrorHandler"> > <camel:from uri="seda:processCustomerInput" /> > <camel:to uri="cxf:bean:webSvcEndpoint" /> > <camel:onException> > > <camel:exception>java.lang.Exception</camel:exception> > > <camel:handled><camel:constant>true</camel:constant></camel:handled> > <camel:log message="*** Error occurred > processing file > ${headers.CamelFileName}. ***" /> > <camel:log > message="${property.CamelExceptionCaught}" /> > </camel:onException> > </camel:route> > > Everything works fine until a non-XML file (bad.xml) is thrown into the > xmlInput folder. The CXF endpoint throws the following exception. When > this happens, route1 cannot delete the bad.xml file from the xmlInput. > Camel keeps picking it up and the same error repeats indefinitely. > > org.apache.camel.InvalidPayloadException: No body available of type: > org.apache.camel.component.cxf.CxfPayload but has value: > GenericFile[M:\bad.xml] of type: > org.apache.camel.component.file.GenericFile > on: null. Caused by: Error during type conversion from type: > org.apache.camel.component.file.GenericFile to the required type: > org.apache.camel.component.cxf.CxfPayload with value > GenericFile[M:\bad.xml] > due org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 2; Content > is not allowed in prolog.. Exchange[null]. Caused by: > [org.apache.camel.TypeConversionException - Error during type conversion > from type: org.apache.camel.component.file.GenericFile to the required > type: > org.apache.camel.component.cxf.CxfPayload with value > GenericFile[M:\bad.xml] > due org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 2; Content > is not allowed in prolog.] > > It is followed by the file deletion error: > > 2013-09-05 13:01:53,469 [ssCustomerInput] WARN GenericFileOnCompletion > - Caused by: > [org.apache.camel.component.file.GenericFileOperationFailedException - > Error > renaming file from M:\bad.xml to M:\.camel\bad.xml] > org.apache.camel.component.file.GenericFileOperationFailedException: Error > renaming file from M:\bad.xml to M:\.camel\bad.xml > at > > org.apache.camel.component.file.FileOperations.renameFile(FileOperations.java:72) > at > > org.apache.camel.component.file.strategy.GenericFileProcessStrategySupport.renameFile(GenericFileProcessStrategySupport.java:113) > at > > org.apache.camel.component.file.strategy.GenericFileRenameProcessStrategy.commit(GenericFileRenameProcessStrategy.java:88) > at > > org.apache.camel.component.file.GenericFileOnCompletion.processStrategyCommit(GenericFileOnCompletion.java:144) > at > > org.apache.camel.component.file.GenericFileOnCompletion.onCompletion(GenericFileOnCompletion.java:82) > at > > org.apache.camel.component.file.GenericFileOnCompletion.onComplete(GenericFileOnCompletion.java:53) > at > > org.apache.camel.util.UnitOfWorkHelper.doneSynchronizations(UnitOfWorkHelper.java:55) > at > org.apache.camel.impl.DefaultUnitOfWork.done(DefaultUnitOfWork.java:226) > at > > org.apache.camel.processor.UnitOfWorkProcessor.doneUow(UnitOfWorkProcessor.java:199) > at > > org.apache.camel.processor.UnitOfWorkProcessor.access$000(UnitOfWorkProcessor.java:37) > at > > org.apache.camel.processor.UnitOfWorkProcessor$1.done(UnitOfWorkProcessor.java:157) > at > > org.apache.camel.processor.RouteContextProcessor$1.done(RouteContextProcessor.java:56) > at org.apache.camel.processor.Pipeline.process(Pipeline.java:106) > at > > org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46) > at > > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) > at > > org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150) > at > > org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117) > at > > org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48) > at > > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) > at > > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) > at > > org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) > at > > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) > at > > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72) > at > > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) > at > > org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:294) > at > org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:203) > at > org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:150) > at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown > Source) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown > Source) > at java.lang.Thread.run(Unknown Source) > Caused by: java.io.IOException: Renaming file from: M:\bad.xml to: > M:\.camel\bad.xml failed due cannot delete from file: M:\bad.xml after copy > succeeded > at org.apache.camel.util.FileUtil.renameFile(FileUtil.java:397) > at > > org.apache.camel.component.file.FileOperations.renameFile(FileOperations.java:70) > ... 29 more > > I can avoid this problem by first converting the body to String in route1 > before sending it to SEDA. But if this is something can be fixed once for > all in Camel/CXF, it will make Camel more robust. > > Thanks! > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/File-renaming-problems-under-Windows-tp5719484p5738801.html > Sent from the Camel - Users mailing list archive at Nabble.com. >