Hi

I will try to reproduce the issue with the help of Apache SSHD as
simulating the SFTP server. It's not like a real server but it may
help and in the future catch regression bugs.

I got the first simple test up and running by uploading a file.


On Sat, Oct 2, 2010 at 4:50 PM, Claus Ibsen <claus.ib...@gmail.com> wrote:
> On Sat, Oct 2, 2010 at 9:14 AM, Claus Ibsen <claus.ib...@gmail.com> wrote:
>> Hi Loririn
>>
>> I think you/we have to step back. We have other users in the past
>> running with SFTP with no problems at all. Also fetching files
>> recursively.
>> So I wonder if we should revert back and keep the old logic!
>
> Btw this didn't come out right as I wanted to say. We should find a
> solution that works for everybody.
> file based data exchange is actually harder than it looks. There are
> so many OS and subtle quirks that can cause hickups.
> And apparently also SFTP servers which deny you to download files
> using paths in the file name :)
>
>
>
>>
>> 1)
>> Is this the first time you use camel-ftp?
>>
>> 2)
>> What OS and FTP server are you using?
>>
>> 3)
>> Can you use regular FTP instead?
>>
>> 4)
>> Use relative urls over absolute. They where the first supported.
>>
>> 5)
>> Can you enable TRACE logging on org.apache.camel.component.file and
>> setup a simple example so it makes it easier to follow and understand
>> what its supposed to do, and what happens in reality so we can see and
>> understand the difference.
>>
>>
>>
>>
>> On Fri, Oct 1, 2010 at 10:45 PM, Lorrin Nelson
>> <lhn_git...@nerdylorrin.net> wrote:
>>> Hi Claus. Ack, sorry about that. I'm pulling through github rather than SVN 
>>> directly and then running via a Maven project pointing at my locally built 
>>> Camel, so it's sometimes confusing how up-to-date I am.
>>>
>>> So I think I have current code, including checkin "CAMEL-3174: Changing dir 
>>> with ftp must do one dir at a time." and I think SFTP polling is now broken 
>>> for both absolute and relative URLs. See debug walk-throughs and stack 
>>> traces below.
>>>
>>> Absolute URI with double leading /:
>>> sftp://u...@host//home/user/subdir?idempotent=true&idempotentRepository=#myCustomIR&include=.*.log&noop=true&password=******
>>>
>>> SftpOperations.changeCurrentDirectory("home/user/subdir") //note there's no 
>>> leading slash on the supposedly absolute path!
>>>        //splits into chunks successfully, starts looping through chunks
>>> doChangeDirectory("home")
>>> ChannelSftp.cd("home")
>>>        //path=remoteAbsolutePath(path);
>>>        //yields "/home/user/home". Doh!
>>>
>>>
>>> Relative URI with single leading /:
>>> sftp://u...@host/subdir?idempotent=true&idempotentRepository=#myCustomIR&include=.*.log&noop=true&password=******
>>> SftpOperations.changeCurrentDirectory("subdir")
>>>        //splits into single chunk, starts looping through chunks
>>> doChangeDirectory("subdir")
>>> ChannelSftp.cd("home")
>>>        //path=remoteAbsolutePath(path);
>>>        //yields "/home/user/subdir". yay!
>>>
>>> ..but then, back in SftpOperations.retrieveFileToStreamInBody, it hits the 
>>> "change back to current directory code"
>>> changeCurrentDirectory("/home/tomcat"); //now we have a leading slash, 
>>> unlike before
>>>        //splits info chunks "", "home", and "tomcat". Doh!
>>> doChangeDirectory("")
>>> ChannelSftp.cd("")
>>>        //path=remoteAbsolutePath(path) throws a 
>>> StringIndexOutOfBoundsException when it receives empty string.
>>>
>>>
>>> Stack trace when attempting to supply absolute path:
>>> org.apache.camel.component.file.GenericFileOperationFailedException: Cannot 
>>> change directory to: home
>>>        at 
>>> org.apache.camel.component.file.remote.SftpOperations.doChangeDirectory(SftpOperations.java:372)
>>>        at 
>>> org.apache.camel.component.file.remote.SftpOperations.changeCurrentDirectory(SftpOperations.java:361)
>>>        at 
>>> org.apache.camel.component.file.remote.SftpOperations.retrieveFileToStreamInBody(SftpOperations.java:428)
>>>        at 
>>> org.apache.camel.component.file.remote.SftpOperations.retrieveFile(SftpOperations.java:407)
>>>        at 
>>> org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:299)
>>>        at 
>>> org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:155)
>>>        at 
>>> org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:121)
>>>        at 
>>> org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:97)
>>>        at 
>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
>>>        at 
>>> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
>>>        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
>>>        at 
>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
>>>        at 
>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
>>>        at 
>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
>>>        at 
>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>        at 
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>        at java.lang.Thread.run(Thread.java:637)
>>> Caused by: 2: No such file
>>>        at 
>>> com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2289)
>>>        at com.jcraft.jsch.ChannelSftp._realpath(ChannelSftp.java:1822)
>>>        at com.jcraft.jsch.ChannelSftp.cd(ChannelSftp.java:268)
>>>        at 
>>> org.apache.camel.component.file.remote.SftpOperations.doChangeDirectory(SftpOperations.java:370)
>>>        ... 16 more
>>>
>>>
>>> Stack trace when relative URL tries to restore current working directory:
>>> SftpConsumer 2010-10-01 13:41:58,529 -- ERROR -- 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:372)
>>>        at 
>>> org.apache.camel.component.file.remote.SftpOperations.changeCurrentDirectory(SftpOperations.java:361)
>>>        at 
>>> org.apache.camel.component.file.remote.SftpOperations.retrieveFileToStreamInBody(SftpOperations.java:435)
>>>        at 
>>> org.apache.camel.component.file.remote.SftpOperations.retrieveFile(SftpOperations.java:407)
>>>        at 
>>> org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:299)
>>>        at 
>>> org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:155)
>>>        at 
>>> org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:121)
>>>        at 
>>> org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:97)
>>>        at 
>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
>>>        at 
>>> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
>>>        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
>>>        at 
>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
>>>        at 
>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
>>>        at 
>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
>>>        at 
>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>        at 
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>        at java.lang.Thread.run(Thread.java:637)
>>> Caused by: 4:
>>>        at com.jcraft.jsch.ChannelSftp.cd(ChannelSftp.java:285)
>>>        at 
>>> org.apache.camel.component.file.remote.SftpOperations.doChangeDirectory(SftpOperations.java:370)
>>>        ... 16 more
>>> Caused by: java.lang.StringIndexOutOfBoundsException: String index out of 
>>> range: 0
>>>        at java.lang.String.charAt(String.java:686)
>>>        at 
>>> com.jcraft.jsch.ChannelSftp.remoteAbsolutePath(ChannelSftp.java:2359)
>>>        at com.jcraft.jsch.ChannelSftp.cd(ChannelSftp.java:264)
>>>        ... 17 more
>>>
>>> Cheers
>>> -Lorrin
>>>
>>> On Sep 29, 2010, at 9:37 PM, Claus Ibsen wrote:
>>>
>>>> Hi
>>>>
>>>> You have not used the latest source code. The stacktrace points to
>>>> empty lines etc.
>>>> Make sure you build camel-core and camel-ftp using latest source code.
>>>>
>>>> Revision: 1002946
>>>> Node Kind: directory
>>>> Schedule: normal
>>>> Last Changed Author: davsclaus
>>>> Last Changed Rev: 1002821
>>>> Last Changed Date: 2010-09-29 21:31:23 +0200 (Wed, 29 Sep 2010)
>>>>
>>>>
>>>> On Wed, Sep 29, 2010 at 11:55 PM, Lorrin Nelson
>>>> <lhn_git...@nerdylorrin.net> wrote:
>>>>> I'm pretty sure I was already at revision 1002541 before. Now I 
>>>>> definitely am. Same Exception. I think the problem is the lack of leading 
>>>>> /.
>>>>>
>>>>> SftpOperations.retrieveFileToStreamInBody computes path as "tmp/mult", 
>>>>> calls changeCurrentDirectory(path), which in turn calls channel.cd(path), 
>>>>> which (now we're in com.jcraft.jsch.ChannelSftp) calls 
>>>>> path=remoteAbsolutePath(path); and computes path: "/home/test/tmp/mult", 
>>>>> which does not exist.
>>>>>
>>>>> SftpConsumer 2010-09-29 14:51:50,487 -- ERROR -- Caused by: 
>>>>> [org.apache.camel.component.file.GenericFileOperationFailedException - 
>>>>> Cannot change current directory to: tmp/mult]
>>>>> org.apache.camel.component.file.GenericFileOperationFailedException: 
>>>>> Cannot change current directory to: tmp/mult
>>>>>        at 
>>>>> org.apache.camel.component.file.remote.SftpOperations.changeCurrentDirectory(SftpOperations.java:352)
>>>>>        at 
>>>>> org.apache.camel.component.file.remote.SftpOperations.retrieveFileToStreamInBody(SftpOperations.java:408)
>>>>>        at 
>>>>> org.apache.camel.component.file.remote.SftpOperations.retrieveFile(SftpOperations.java:387)
>>>>>        at 
>>>>> org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:299)
>>>>>        at 
>>>>> org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:155)
>>>>>        at 
>>>>> org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:121)
>>>>>        at 
>>>>> org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:97)
>>>>>        at 
>>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
>>>>>        at 
>>>>> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
>>>>>        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
>>>>>        at 
>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
>>>>>        at 
>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
>>>>>        at 
>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
>>>>>        at 
>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>>>        at 
>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>>>        at java.lang.Thread.run(Thread.java:637)
>>>>> Caused by: 2: No such file
>>>>>        at 
>>>>> com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2289)
>>>>>        at com.jcraft.jsch.ChannelSftp._realpath(ChannelSftp.java:1822)
>>>>>        at com.jcraft.jsch.ChannelSftp.cd(ChannelSftp.java:268)
>>>>>        at 
>>>>> org.apache.camel.component.file.remote.SftpOperations.changeCurrentDirectory(SftpOperations.java:350)
>>>>>        ... 15 more
>>>>>
>>>>>
>>>>> Cheers!
>>>>> -Lorrin
>>>>>
>>>>> On Sep 29, 2010, at 12:32 PM, Claus Ibsen wrote:
>>>>>
>>>>>> Hi
>>>>>>
>>>>>> Can you try again with latest source code from trunk. I have changed
>>>>>> the logic to change dir one folder at a time.
>>>>>>
>>>>>>
>>>>>> On Wed, Sep 29, 2010 at 7:47 PM, Lorrin Nelson
>>>>>> <lhn_git...@nerdylorrin.net> wrote:
>>>>>>> Thanks for the quick response. I'm seeing a different failure now 
>>>>>>> ("Cannot change current directory to: tmp/mult" rather than "Cannot 
>>>>>>> retrieve file: tmp/mult/dummy-5.log"). Is it suspicious that in either 
>>>>>>> case there is no leading /?
>>>>>>>
>>>>>>> I tried uris
>>>>>>> sftp://t...@host//tmp/mult?include=.*\.log
>>>>>>> and
>>>>>>> sftp://t...@host///tmp/mult?include=.*\.log
>>>>>>>
>>>>>>> SftpConsumer 2010-09-29 10:31:48,401 -- ERROR -- Caused by: 
>>>>>>> [org.apache.camel.component.file.GenericFileOperationFailedException - 
>>>>>>> Cannot change current directory to: tmp/mult]
>>>>>>> org.apache.camel.component.file.GenericFileOperationFailedException: 
>>>>>>> Cannot change current directory to: tmp/mult
>>>>>>>        at 
>>>>>>> org.apache.camel.component.file.remote.SftpOperations.changeCurrentDirectory(SftpOperations.java:352)
>>>>>>>        at 
>>>>>>> org.apache.camel.component.file.remote.SftpOperations.retrieveFileToStreamInBody(SftpOperations.java:408)
>>>>>>>        at 
>>>>>>> org.apache.camel.component.file.remote.SftpOperations.retrieveFile(SftpOperations.java:387)
>>>>>>>        at 
>>>>>>> org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:299)
>>>>>>>        at 
>>>>>>> org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:155)
>>>>>>>        at 
>>>>>>> org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:121)
>>>>>>>        at 
>>>>>>> org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:97)
>>>>>>>        at 
>>>>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
>>>>>>>        at 
>>>>>>> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
>>>>>>>        at 
>>>>>>> java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
>>>>>>>        at 
>>>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
>>>>>>>        at 
>>>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
>>>>>>>        at 
>>>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
>>>>>>>        at 
>>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>>>>>        at 
>>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>>>>>        at java.lang.Thread.run(Thread.java:637)
>>>>>>> Caused by: 2: No such file
>>>>>>>        at 
>>>>>>> com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2289)
>>>>>>>        at com.jcraft.jsch.ChannelSftp._realpath(ChannelSftp.java:1822)
>>>>>>>        at com.jcraft.jsch.ChannelSftp.cd(ChannelSftp.java:268)
>>>>>>>        at 
>>>>>>> org.apache.camel.component.file.remote.SftpOperations.changeCurrentDirectory(SftpOperations.java:350)
>>>>>>>        ... 15 more
>>>>>>>
>>>>>>> On a tangentially related note, there's some file name processing 
>>>>>>> during the move step that throws a NullPointerException when the URI 
>>>>>>> contains a trailing slash:
>>>>>>>
>>>>>>> sftp://t...@host/tmp/mult/?include=.*\.log
>>>>>>>
>>>>>>> The problem is that GenericFile.changeFileName calls
>>>>>>>        newFileName = ObjectHelper.after(newFileName, endpointPath + 
>>>>>>> getFileSeparator());
>>>>>>> ...without first checking if endPointPath contains a trailing separator.
>>>>>>>
>>>>>>> E.g.
>>>>>>>        newFileName: "tmp/mult/.done/dummy-2.log"
>>>>>>>        endPointPath: "tmp/mult/"
>>>>>>>
>>>>>>> ObjectHelper.after():
>>>>>>>        text: "tmp/mult/.done/dummy-2.log"
>>>>>>>        after: "tmp/mult//"
>>>>>>>
>>>>>>> text doesn't contain after (because of double //), returns null, 
>>>>>>> changeFileName() doesn't expect null, throws NPE.
>>>>>>>
>>>>>>> GenericFileOnCompletion 2010-09-29 10:37:37,888 -- ERROR -- Caused by: 
>>>>>>> [java.lang.NullPointerException - null]
>>>>>>> java.lang.NullPointerException
>>>>>>>        at java.io.File.<init>(File.java:222)
>>>>>>>        at 
>>>>>>> org.apache.camel.component.file.GenericFile.changeFileName(GenericFile.java:169)
>>>>>>>        at 
>>>>>>> org.apache.camel.component.file.strategy.GenericFileExpressionRenamer.renameFile(GenericFileExpressionRenamer.java:41)
>>>>>>>        at 
>>>>>>> org.apache.camel.component.file.strategy.GenericFileRenameProcessStrategy.commit(GenericFileRenameProcessStrategy.java:82)
>>>>>>>        at 
>>>>>>> org.apache.camel.component.file.GenericFileOnCompletion.processStrategyCommit(GenericFileOnCompletion.java:121)
>>>>>>>        at 
>>>>>>> org.apache.camel.component.file.GenericFileOnCompletion.onCompletion(GenericFileOnCompletion.java:83)
>>>>>>>        at 
>>>>>>> org.apache.camel.component.file.GenericFileOnCompletion.onComplete(GenericFileOnCompletion.java:52)
>>>>>>>        at 
>>>>>>> org.apache.camel.util.UnitOfWorkHelper.doneSynchronizations(UnitOfWorkHelper.java:55)
>>>>>>>        at 
>>>>>>> org.apache.camel.impl.DefaultUnitOfWork.done(DefaultUnitOfWork.java:173)
>>>>>>>        at 
>>>>>>> org.apache.camel.processor.UnitOfWorkProcessor.doneUow(UnitOfWorkProcessor.java:121)
>>>>>>>        at 
>>>>>>> org.apache.camel.processor.UnitOfWorkProcessor.access$000(UnitOfWorkProcessor.java:36)
>>>>>>>        at 
>>>>>>> org.apache.camel.processor.UnitOfWorkProcessor$1.done(UnitOfWorkProcessor.java:106)
>>>>>>>        at org.apache.camel.processor.Pipeline.process(Pipeline.java:130)
>>>>>>>        at 
>>>>>>> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:99)
>>>>>>>        at 
>>>>>>> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)
>>>>>>>        at 
>>>>>>> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)
>>>>>>>        at 
>>>>>>> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)
>>>>>>>        at 
>>>>>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68)
>>>>>>>        at 
>>>>>>> org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:322)
>>>>>>>        at 
>>>>>>> org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:155)
>>>>>>>        at 
>>>>>>> org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:121)
>>>>>>>        at 
>>>>>>> org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:97)
>>>>>>>        at 
>>>>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
>>>>>>>        at 
>>>>>>> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
>>>>>>>        at 
>>>>>>> java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
>>>>>>>        at 
>>>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
>>>>>>>        at 
>>>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
>>>>>>>        at 
>>>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
>>>>>>>        at 
>>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>>>>>        at 
>>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>>>>>        at java.lang.Thread.run(Thread.java:637)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Sep 29, 2010, at 2:46 AM, Claus Ibsen wrote:
>>>>>>>
>>>>>>>> Hi
>>>>>>>>
>>>>>>>> I have committed a fix to the SFTP component. Can you try with latest
>>>>>>>> source code from trunk?
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Sep 28, 2010 at 7:36 PM, Lorrin <lhn_git...@nerdylorrin.net> 
>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> I just bumped into the same problem. I'm running 2.5-SNAPSHOT.
>>>>>>>>>
>>>>>>>>> SftpConsumer 2010-09-28 10:31:28,094 -- ERROR -- Caused by:
>>>>>>>>> [org.apache.camel.component.file.GenericFileOperationFailedException -
>>>>>>>>> Cannot retrieve file: tmp/mult/dummy-5.log]
>>>>>>>>> org.apache.camel.component.file.GenericFileOperationFailedException: 
>>>>>>>>> Cannot
>>>>>>>>> retrieve file: tmp/mult/dummy-5.log
>>>>>>>>>        at
>>>>>>>>> org.apache.camel.component.file.remote.SftpOperations.retrieveFileToStreamInBody(SftpOperations.java:403)
>>>>>>>>>        at
>>>>>>>>> org.apache.camel.component.file.remote.SftpOperations.retrieveFile(SftpOperations.java:387)
>>>>>>>>>        at
>>>>>>>>> org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:299)
>>>>>>>>>        at
>>>>>>>>> org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:155)
>>>>>>>>>        at
>>>>>>>>> org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:121)
>>>>>>>>>        at
>>>>>>>>> org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:97)
>>>>>>>>>        at 
>>>>>>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
>>>>>>>>>        at
>>>>>>>>> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
>>>>>>>>>        at 
>>>>>>>>> java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
>>>>>>>>>        at
>>>>>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
>>>>>>>>>        at
>>>>>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
>>>>>>>>>        at
>>>>>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
>>>>>>>>>        at
>>>>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>>>>>>>        at
>>>>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>>>>>>>        at java.lang.Thread.run(Thread.java:637)
>>>>>>>>> Caused by: 2: No such file
>>>>>>>>>        at 
>>>>>>>>> com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2289)
>>>>>>>>>        at com.jcraft.jsch.ChannelSftp._get(ChannelSftp.java:901)
>>>>>>>>>        at com.jcraft.jsch.ChannelSftp.get(ChannelSftp.java:870)
>>>>>>>>>        at com.jcraft.jsch.ChannelSftp.get(ChannelSftp.java:849)
>>>>>>>>>        at
>>>>>>>>> org.apache.camel.component.file.remote.SftpOperations.retrieveFileToStreamInBody(SftpOperations.java:400)
>>>>>>>>>        ... 14 more
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> View this message in context: 
>>>>>>>>> http://camel.465427.n5.nabble.com/How-to-change-directory-while-using-sftp-component-tp2806817p2857187.html
>>>>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Claus Ibsen
>>>>>>>> Apache Camel Committer
>>>>>>>>
>>>>>>>> Author of Camel in Action: http://www.manning.com/ibsen/
>>>>>>>> Open Source Integration: http://fusesource.com
>>>>>>>> Blog: http://davsclaus.blogspot.com/
>>>>>>>> Twitter: http://twitter.com/davsclaus
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Claus Ibsen
>>>>>> Apache Camel Committer
>>>>>>
>>>>>> Author of Camel in Action: http://www.manning.com/ibsen/
>>>>>> Open Source Integration: http://fusesource.com
>>>>>> Blog: http://davsclaus.blogspot.com/
>>>>>> Twitter: http://twitter.com/davsclaus
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Claus Ibsen
>>>> Apache Camel Committer
>>>>
>>>> Author of Camel in Action: http://www.manning.com/ibsen/
>>>> Open Source Integration: http://fusesource.com
>>>> Blog: http://davsclaus.blogspot.com/
>>>> Twitter: http://twitter.com/davsclaus
>>>>
>>>
>>>
>>
>>
>>
>> --
>> Claus Ibsen
>> Apache Camel Committer
>>
>> Author of Camel in Action: http://www.manning.com/ibsen/
>> Open Source Integration: http://fusesource.com
>> Blog: http://davsclaus.blogspot.com/
>> Twitter: http://twitter.com/davsclaus
>>
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Author of Camel in Action: http://www.manning.com/ibsen/
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Reply via email to