Hi,
thanks for this test now I think here is the problem:
[l-1) thread #1 - file://target] GenericFileOnCompletion WARN Error
during commit. Exchange[any.zip]. Caused by:
[org.apache.camel.component.file.GenericFileOperationFailedException - Error
renaming file from
C:\temp\camel-examples-master\zip-file-processing\target\any.zip to
target\.done\any.zip]
org.apache.camel.component.file.GenericFileOperationFailedException: Error
renaming file from
C:\temp\camel-examples-master\zip-file-processing\target\any.zip to
target\.done\any.zip
at
org.apache.camel.component.file.FileOperations.renameFile(FileOperations.java:77)
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:124)
at
org.apache.camel.component.file.GenericFileOnCompletion.onCompletion(GenericFileOnCompletion.java:80)
at
org.apache.camel.component.file.GenericFileOnCompletion.onComplete(GenericFileOnCompletion.java:54)
at
org.apache.camel.util.UnitOfWorkHelper.doneSynchronizations(UnitOfWorkHelper.java:100)
at
org.apache.camel.impl.DefaultUnitOfWork.done(DefaultUnitOfWork.java:228)
at
org.apache.camel.util.UnitOfWorkHelper.doneUow(UnitOfWorkHelper.java:61)
at
org.apache.camel.processor.CamelInternalProcessor$UnitOfWorkProcessorAdvice.after(CamelInternalProcessor.java:613)
at
org.apache.camel.processor.CamelInternalProcessor$UnitOfWorkProcessorAdvice.after(CamelInternalProcessor.java:581)
at
org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:240)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:106)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at
org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:423)
at
org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:211)
at
org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:175)
at
org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:187)
at
org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:114)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: Renaming file from
'C:\temp\camel-examples-master\zip-file-processing\target\any.zip' to
'target\.done\any.zip' failed: Cannot delete file
'C:\temp\camel-examples-master\zip-file-processing\target\any.zip' after copy
succeeded
at org.apache.camel.util.FileUtil.renameFileUsingCopy(FileUtil.java:456)
at org.apache.camel.util.FileUtil.renameFile(FileUtil.java:428)
at
org.apache.camel.component.file.FileOperations.renameFile(FileOperations.java:74)
... 25 more
This is why it grabs the file all the time.
Regarding your questions:
1) well thanks to your test you can see error above
2) yes it is processing it over and over again
3) no doesn't move to .error
4) no file is not updated, in your test case I am not quite sure, will increase
delay or as you suggested preMove option.
Due to known problems off windows and zip files I even renamed it to .xxx to
keep away explorer from analyzing, but still it seems there is a handle on that
file.
And again if I remove the unmarshal and split it works fine.
Thanks for any help.
Best regards,
-----Ursprüngliche Nachricht-----
Von: Jimmi Dyson [mailto:[email protected]]
Gesendet: Dienstag, 2. September 2014 10:37
An: [email protected]
Betreff: Re: camel 2.13.2 zipdataformat
Hi,
I just added an example at
https://github.com/jimmidyson/camel-examples/tree/master/zip-file-processing.
This example creates the zip file first (so that it's repeatable) & then does
pretty much what you're doing: read from file uri, unmarshal, log each file
contents (careful with large files) & finally writes each file to a file. Seems
to be doing what it should...
Few questions if the example doesn't help you:
- Are there any hints in the logs (try increasing logging level if not)?
- If the file is back in the source dir does it try to process again?
- Is there anything in the .error (moveFailed dir)?
- Could the source file be being updated while you're processing it - if
so, can you try the preMove option?
Thanks,
On 2 September 2014 08:46, Walzer, Thomas <[email protected]>
wrote:
> Hi Sven,
>
> I seem to have a similar problem. I also use 2.13.2.
> My code is almost identical. The only difference is my in-url, that
> looks
> like:
>
> file:////someserver/somedir/in?move=archive/${date:now:yyyyMMdd}/${fil
> e:name}.${date:now:HHmmss}&antInclude=*.ZIP
>
> I get a random number of retrievals (about 4-20) and therefore the
> same number of files in the „archive“ directory. The timestamps are 6
> seconds apart.
>
> Cheers, Thomas.
>
> Am 02.09.2014 um 08:44 schrieb Sven Nold <[email protected]>:
>
> > Hi Guys,
> >
> > I am trying to read Zipentries and process them separately. But
> > using
> the file component it seems the file is not correctly closed. I can
> see the file for a few seconds in the .done and source directory. But
> then it disappears in the .done folder and is back in the source directory :
> >
> >
> > <bean id="zipFileDataFormat"
> class="org.apache.camel.dataformat.zipfile.ZipFileDataFormat">
> > <property name="usingIterator" value="true" /> </bean>
> >
> > <route id="readZip">
> > <from
> uri="file://C:/temp/?fileName=any.zip&moveFailed=.error&move=.done&delay=10000"
> />
> > <unmarshal ref="zipFileDataFormat" />
> > <!-- <split streaming="true"> -->
> > <!-- <simple>$simple{body}</simple> -->
> > <!-- <to
> uri="log://OUT?level=INFO&showAll=true&multiline=true" /> -->
> > <!-- </split> -->
> > <to uri="log://OUT?level=INFO&showAll=true&multiline=true"
> />
> > </route>
> >
> > If I remove the unmarshal the file component works fine (it moves
> processed file to .done).
> >
> > Any Ideas? I guess I could do a workaround by using noop=true and
> > moving
> the file myself, but it would be nice if it works as expected.
> >
> > Best regards,
> >
> > Sven
>
>