GenericFileOperationFailedException:无法将目录更改为:..-尝试SFTP 1G文件时

Dav*_*vid 2 sftp apache-camel

我正在通过SFTP获取大文件并尝试使用readLocks。尝试获取1G文件(一个大文件需要花费几秒钟的复制时间)时,出现以下异常。顺便说一句,当我尝试使用大约1M的小文件时,SFTP可以正常工作。

这是Camel 2.12.1中的错误,还是我做错了什么?

2013-12-13 14:30:12,964 [alhost/outbound]  INFO SftpConsumer                   - Connected and logged in to: sftp://tdr@localhost:22
2013-12-13 14:30:19,893 [alhost/outbound]  WARN SftpConsumer                   - Error processing file RemoteFile[Centos5.7-64-Base-GS-Image-UI.ova] due to Cannot change directory to: ... Caused by: [org.apache.camel.component.file.GenericFileOperationFailedException - Cannot change directory to: ..]
org.apache.camel.component.file.GenericFileOperationFailedException: Cannot change directory to: ..
    at org.apache.camel.component.file.remote.SftpOperations.doChangeDirectory(SftpOperations.java:542)
    at org.apache.camel.component.file.remote.SftpOperations.changeCurrentDirectory(SftpOperations.java:530)
    at org.apache.camel.component.file.remote.SftpOperations.retrieveFileToStreamInBody(SftpOperations.java:656)
    at org.apache.camel.component.file.remote.SftpOperations.retrieveFile(SftpOperations.java:594)
    at org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:362)
    at org.apache.camel.component.file.remote.RemoteFileConsumer.processExchange(RemoteFileConsumer.java:99)
    at org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:201)
    at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:165)
    at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:187)
    at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:114)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
Run Code Online (Sandbox Code Playgroud)

我的路线如下所示:

from("sftp://tdr@localhost/outbound?password=xxx&delete=true&readLock=changed&delay=10000&readLockCheckInterval=3000")
        .to("file:///home/cps/camel/input?flatten=true");
Run Code Online (Sandbox Code Playgroud)

Dav*_*vid 5

经过一番谷歌搜索后,我发现建议添加stepwise = false以防止出现上述异常。设置stepwise = false后,我得到了OutOfMemory异常,还添加了streamDownload = true。现在,以下路由将对我的大文件进行sftp传输,并且由于将大文件复制到SFTP目录中时我已验证SFTP没有开始,因此我已证明readlocks可以工作。

from("sftp://tdr@localhost/outbound?streamDownload=true&stepwise=false&password=xxx&delete=true&readLock=changed&delay=5000&readLockCheckInterval=2000")
        .to("file:///home/cps/camel/input?flatten=true");
Run Code Online (Sandbox Code Playgroud)