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://[email protected]?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