Hi,

I am having trouble getting the file pickup from SFTP site and delivered to 
multiple destinations. The destination1 able to successfully received the file. 
It seems when I use "localworkdirectory" the destination2 will not be able to 
receive any file. I noticed that when I removed the localworkdirectory it seems 
both endpoints able get the file.

The problem is I need localworkdirectory since the file I pick up from SFTP is 
quite large.

I would receive a Java exception - "Caused by: java.io.FileNotFoundException: 
/tmp/file100MB_multicast_22Mar.csv (No such file or directory)"

Is it a bug when using localworkdirectory?
Any workaround?

Code snippet
------------------

from("sftp://u...@xxx.yyy?localworkdirectory=/tmp&binary=true&stepwise=false&autoCreate=false";).routeId(JSONProperties.get("name")).choice().when(body().isNull())
                        .log("${routeId}  :: ${date:now:HH:mm:ss:SS} Nothing 
here.. ")
                        .otherwise()
                        .log("Start Transfer : ${headers.CamelFileName}")
                        .multicast()
                        .to(destination1)
                        .log("Destination 1 done: ${headers.CamelFileName} ")
                        .to(destination2)
                        .log("Destination 2 done: ${headers.CamelFileName} ");

Version
----------
camel-spring-boot-dependencies = 3.11.1
OpenJDK = 8
spring-boot-starter-parent = 2.5.0

Message log:
-----------------
2022-03-23 02:00:17.474  INFO 17323 --- [amel-1_Worker-1] 
o.a.c.p.e.DefaultErrorHandler            : Failed delivery for (MessageId: 
18B7BF1BC7F0158-0000000000000005 on ExchangeId: 
18B7BF1BC7F0158-0000000000000005). On delivery attempt: 0 caught: 
org.apache.camel.component.file.GenericFileOperationFailedException: Cannot 
store file: /destination2/file100MB_multicast_22Mar.csv.tmp

org.apache.camel.component.file.GenericFileOperationFailedException: Cannot 
store file: /destination2/file100MB_multicast_22Mar.csv.tmp
        at 
org.apache.camel.component.file.FileOperations.storeFile(FileOperations.java:408)
 ~[camel-file-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.component.file.GenericFileProducer.writeFile(GenericFileProducer.java:290)
 ~[camel-file-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.component.file.GenericFileProducer.processExchange(GenericFileProducer.java:173)
 ~[camel-file-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.component.file.GenericFileProducer.process(GenericFileProducer.java:78)
 ~[camel-file-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:66)
 ~[camel-support-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:172) 
~[camel-core-processor-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:398)
 [camel-base-engine-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:804)
 [camel-core-processor-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:712)
 [camel-core-processor-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:179)
 [camel-base-engine-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:64)
 [camel-base-engine-3.11.1.jar!/:3.11.1]
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:184) 
[camel-core-processor-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:398)
 [camel-base-engine-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:492)
 [camel-file-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.component.file.remote.RemoteFileConsumer.processExchange(RemoteFileConsumer.java:156)
 [camel-ftp-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:245)
 [camel-file-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:206)
 [camel-file-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.support.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:190)
 [camel-support-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.support.ScheduledPollConsumer.run(ScheduledPollConsumer.java:107)
 [camel-support-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.pollconsumer.quartz.QuartzScheduledPollConsumerJob.execute(QuartzScheduledPollConsumerJob.java:61)
 [camel-quartz-3.11.1.jar!/:3.11.1]
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202) 
[quartz-2.3.2.jar!/:na]
        at 
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) 
[quartz-2.3.2.jar!/:na]
Caused by: org.apache.camel.InvalidPayloadException: No body available of type: 
java.io.InputStream but has value: RemoteFile[file100MB_multicast_22Mar.csv] of 
type: org.apache.camel.component.file.remote.RemoteFile on: 
file100MB_multicast_22Mar.csv. Caused by: Error during type conversion from 
type: java.io.File to the required type: java.io.InputStream with value 
/tmp/file100MB_multicast_22Mar.csv due to java.io.FileNotFoundException: 
/tmp/file100MB_multicast_22Mar.csv (No such file or directory). 
Exchange[18B7BF1BC7F0158-0000000000000005]. Caused by: 
[org.apache.camel.TypeConversionException - Error during type conversion from 
type: java.io.File to the required type: java.io.InputStream with value 
/tmp/file100MB_multicast_22Mar.csv due to java.io.FileNotFoundException: 
/tmp/file100MB_multicast_22Mar.csv (No such file or directory)]
        at 
org.apache.camel.support.MessageSupport.getMandatoryBody(MessageSupport.java:125)
 ~[camel-support-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.component.file.FileOperations.storeFile(FileOperations.java:387)
 ~[camel-file-3.11.1.jar!/:3.11.1]
        ... 21 common frames omitted
Caused by: org.apache.camel.TypeConversionException: Error during type 
conversion from type: java.io.File to the required type: java.io.InputStream 
with value /tmp/file100MB_multicast_22Mar.csv due to 
java.io.FileNotFoundException: /tmp/file100MB_multicast_22Mar.csv (No such file 
or directory)
        at 
org.apache.camel.converter.CamelBaseBulkConverterLoader.convertTo(CamelBaseBulkConverterLoader.java:65)
 ~[camel-base-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:461)
 ~[camel-base-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:356)
 ~[camel-base-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.impl.converter.CoreTypeConverterRegistry.convertTo(CoreTypeConverterRegistry.java:203)
 ~[camel-base-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.component.file.GenericFileConverter.genericFileToInputStream(GenericFileConverter.java:131)
 ~[camel-file-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.component.file.GenericFileConverterLoader.lambda$registerConverters$0(GenericFileConverterLoader.java:46)
 ~[camel-file-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.support.SimpleTypeConverter.convertTo(SimpleTypeConverter.java:101)
 ~[camel-support-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:478)
 ~[camel-base-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:356)
 ~[camel-base-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.impl.converter.CoreTypeConverterRegistry.mandatoryConvertTo(CoreTypeConverterRegistry.java:272)
 ~[camel-base-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.support.MessageSupport.getMandatoryBody(MessageSupport.java:123)
 ~[camel-support-3.11.1.jar!/:3.11.1]
        ... 22 common frames omitted
Caused by: java.io.FileNotFoundException: /tmp/file100MB_multicast_22Mar.csv 
(No such file or directory)
        at java.io.FileInputStream.open0(Native Method) ~[na:1.8.0_312]
        at java.io.FileInputStream.open(FileInputStream.java:195) 
~[na:1.8.0_312]
        at java.io.FileInputStream.<init>(FileInputStream.java:138) 
~[na:1.8.0_312]
        at 
org.apache.camel.converter.IOConverter.toInputStream(IOConverter.java:81) 
~[camel-base-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.converter.CamelBaseBulkConverterLoader.doConvertTo(CamelBaseBulkConverterLoader.java:134)
 ~[camel-base-3.11.1.jar!/:3.11.1]
        at 
org.apache.camel.converter.CamelBaseBulkConverterLoader.convertTo(CamelBaseBulkConverterLoader.java:56)
 ~[camel-base-3.11.1.jar!/:3.11.1]
        ... 32 common frames omitted

Reply via email to