You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "hisao furuichi (JIRA)" <ji...@apache.org> on 2019/07/02 08:56:00 UTC

[jira] [Commented] (CAMEL-13680) camel-file - From file to file with readLock=fileLock dont work on windows

    [ https://issues.apache.org/jira/browse/CAMEL-13680?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16876789#comment-16876789 ] 

hisao furuichi commented on CAMEL-13680:
----------------------------------------

Hello [~davsclaus],

I realized that the fix was not enough for this issue.

org.apache.camel.component.file.FileOperations.writeFileByFile() was OK now, but we also need to fix org.apache.camel.component.file.FileOperations.renameFile() and org.apache.camel.util.FileUtil class's methods to avoid to use java.nio.file.Files.copy() method.

Please take a look at this stack trace to get an idea about it. (Sorry it's not 3.0.x, but I hope it still helps)
{code:java}
[ead #4 - file://work/cbr/input] GenericFileOnCompletion        WARN  Error during commit. Exchange[ID-WIN-JTA8KU4EF9D-1562055372761-0-1]. Caused by: [org.apache.camel.component.file.GenericFileOperationFailedException - Error renaming file from C:\Users\Administrator\workspace\FuseReproducer\work\cbr\input\ID-WIN-JTA8KU4EF9D-1562029860727-1-2 to work\cbr\input\.camel\ID-WIN-JTA8KU4EF9D-1562029860727-1-2]
org.apache.camel.component.file.GenericFileOperationFailedException: Error renaming file from C:\Users\Administrator\workspace\FuseReproducer\work\cbr\input\ID-WIN-JTA8KU4EF9D-1562029860727-1-2 to work\cbr\input\.camel\ID-WIN-JTA8KU4EF9D-1562029860727-1-2
	at org.apache.camel.component.file.FileOperations.renameFile(FileOperations.java:85)
	at org.apache.camel.component.file.strategy.GenericFileProcessStrategySupport.renameFile(GenericFileProcessStrategySupport.java:128)
	at org.apache.camel.component.file.strategy.GenericFileRenameProcessStrategy.commit(GenericFileRenameProcessStrategy.java:111)
	at org.apache.camel.component.file.GenericFileOnCompletion.processStrategyCommit(GenericFileOnCompletion.java:127)
	at org.apache.camel.component.file.GenericFileOnCompletion.onCompletion(GenericFileOnCompletion.java:83)
	at org.apache.camel.component.file.GenericFileOnCompletion.onComplete(GenericFileOnCompletion.java:59)
	at org.apache.camel.util.UnitOfWorkHelper.doneSynchronizations(UnitOfWorkHelper.java:104)
	at org.apache.camel.impl.DefaultUnitOfWork.done(DefaultUnitOfWork.java:243)
	at org.apache.camel.util.UnitOfWorkHelper.doneUow(UnitOfWorkHelper.java:65)
	at org.apache.camel.processor.CamelInternalProcessor$UnitOfWorkProcessorAdvice.after(CamelInternalProcessor.java:685)
	at org.apache.camel.processor.CamelInternalProcessor$UnitOfWorkProcessorAdvice.after(CamelInternalProcessor.java:634)
	at org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:251)
	at org.apache.camel.processor.Pipeline.process(Pipeline.java:127)
	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
	at org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:454)
	at org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:223)
	at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:187)
	at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:174)
	at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:101)
	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
	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.nio.file.FileSystemException: C:\Users\Administrator\workspace\FuseReproducer\work\cbr\input\ID-WIN-JTA8KU4EF9D-1562029860727-1-2 -> work\cbr\input\.camel\ID-WIN-JTA8KU4EF9D-1562029860727-1-2: The process cannot access the file because it is being used by another process

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileCopy.copy(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.copy(Unknown Source)
	at java.nio.file.Files.copy(Unknown Source)
	at org.apache.camel.util.FileUtil.copyFile(FileUtil.java:541)
	at org.apache.camel.util.FileUtil.renameFileUsingCopy(FileUtil.java:525)
	at org.apache.camel.util.FileUtil.renameFile(FileUtil.java:499)
	at org.apache.camel.component.file.FileOperations.renameFile(FileOperations.java:82)
	... 25 more
{code}

> camel-file - From file to file with readLock=fileLock dont work on windows
> --------------------------------------------------------------------------
>
>                 Key: CAMEL-13680
>                 URL: https://issues.apache.org/jira/browse/CAMEL-13680
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>            Reporter: Claus Ibsen
>            Assignee: Claus Ibsen
>            Priority: Minor
>             Fix For: 3.0.0, 3.0.0.M4
>
>
> You can get errors like
> {code}
> Stacktrace
> ---------------------------------------------------------------------------------------------------------------------------------------
> org.apache.camel.component.file.GenericFileOperationFailedException: Cannot store file: work\cbr\output\ID-WIN-JTA8KU4EF9D-1561426618994-0-2
> 	at org.apache.camel.component.file.FileOperations.storeFile(FileOperations.java:352)
> 	at org.apache.camel.component.file.GenericFileProducer.writeFile(GenericFileProducer.java:305)
> 	at org.apache.camel.component.file.GenericFileProducer.processExchange(GenericFileProducer.java:169)
> 	at org.apache.camel.component.file.GenericFileProducer.process(GenericFileProducer.java:80)
> 	at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
> 	at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148)
> 	at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
> 	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
> 	at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
> 	at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
> 	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
> 	at org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:452)
> 	at org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:219)
> 	at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:183)
> 	at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:174)
> 	at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:101)
> 	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
> 	at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
> 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
> 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
> 	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.nio.file.FileSystemException: work\cbr\input\ID-WIN-JTA8KU4EF9D-1561426618994-0-2 -> work\cbr\output\ID-WIN-JTA8KU4EF9D-1561426618994-0-2: The process cannot access the file because it is being used by another process
> 	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
> 	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
> 	at sun.nio.fs.WindowsFileCopy.copy(Unknown Source)
> 	at sun.nio.fs.WindowsFileSystemProvider.copy(Unknown Source)
> 	at java.nio.file.Files.copy(Unknown Source)
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)