Clemens Blamauer created CAMEL-13667:
----------------------------------------

             Summary: Windows network UNC paths not treated correctly 
(File2/tempPrefix)
                 Key: CAMEL-13667
                 URL: https://issues.apache.org/jira/browse/CAMEL-13667
             Project: Camel
          Issue Type: Bug
          Components: came-core
    Affects Versions: 2.22.2
            Reporter: Clemens Blamauer
         Attachments: 
Windows_network_UNC_paths_not_treated_correctly_(File2_tempPrefix).patch

Dear all,

We are using Camel's File2 endpoint to deliver reports to a Windows network 
share. The used URI is (here in a properties file):

{{# File URI equivalent of \\FILESERVER.mycompany.local\Public\reports}}
{{report.delivery.to=file:////FILESERVER.mycompany.local/Public/reports?keepLastModified=true&tempPrefix=tmp_}}

This results in an exception, see the stack trace below.

I debugged and traced the issue back to:

{{org.apache.camel.component.file.GenericFileProducer#createTempFileName}}

which is using

{{org.apache.camel.util.FileUtil#compactPath(java.lang.String, 
java.lang.String)}}

This method only preserves the first slash/backslash at the start. For UNC 
paths on Windows however, 2 backslashes are needed.

I prepared a patch for:
 * {{org.apache.camel.util.FileUtil}}
 * {{org.apache.camel.util.FileUtilTest}}

which remedies the issue on Windows.

I would appreciate if you could check the patch, and integrate it to 2.x and 
3.x branches if it is ok.

Thank you.

Kind regards,

Clemens

 

*Stack trace*

{{org.apache.camel.component.file.GenericFileOperationFailedException: Error 
renaming file from 
{color:#FF0000}\{color}FILESERVER.mycompany.local\Public\reports\20190415\tmp_eod_report_20190415.csv
 to 
{color:#14892c}\\{color}FILESERVER.mycompany.local\Public\reports\20190415\eod_report_20190415.csv}}
{{    at 
org.apache.camel.component.file.FileOperations.renameFile(FileOperations.java:81)
 ~[camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.component.file.GenericFileProducer.processExchange(GenericFileProducer.java:202)
 ~[camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.component.file.GenericFileProducer.process(GenericFileProducer.java:80)
 ~[camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
 ~[camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148) 
~[camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
 [camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
 [camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
 [camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.component.direct.DirectBlockingProducer.process(DirectBlockingProducer.java:53)
 [camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148) 
[camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
 [camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
 [camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
 [camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:715)
 [camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:638)
 [camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:248)
 [camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
 [camel-core-2.22.2.jar:2.22.2]}}
{{    at org.apache.camel.processor.Pipeline.process(Pipeline.java:138) 
[camel-core-2.22.2.jar:2.22.2]}}
{{    at org.apache.camel.processor.Pipeline.process(Pipeline.java:101) 
[camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
 [camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:454)
 [camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:223)
 [camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:187)
 [camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:174)
 [camel-core-2.22.2.jar:2.22.2]}}
{{    at 
org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:101) 
[camel-core-2.22.2.jar:2.22.2]}}
{{    at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
[?:1.8.0_212]}}
{{    at 
java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:308) 
[?:1.8.0_212]}}
{{    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java) 
[?:1.8.0_212]}}
{{    at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
 [?:1.8.0_212]}}
{{    at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
 [?:1.8.0_212]}}
{{    at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[?:1.8.0_212]}}
{{    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[?:1.8.0_212]}}
{{    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_212]}}
{{Caused by: java.nio.file.NoSuchFileException: 
{color:#d04437}\{color}FILESERVER.mycompany.local\Public\reports\20190415\tmp_eod_report_20190415.csv
 -> 
{color:#14892c}\\{color}FILESERVER.mycompany.local\Public\reports\20190415\eod_report_20190415.csv}}

 

 



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

Reply via email to