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)