I encounter a strange error when camel ftp consumer is deleting file in
remote server.

Is there any problem in my route setting and how to prevent it?

----------
Story

I am testing ftp consumer behavior with delete option and attempt to use
thread to speed up the process, but encounter a strange error. To better
simulate the problem, I remove the delete right of the user account. 

The target folder is 2 level deep from ftp access root
folder(/timtest/delete_test) and contains 2 files.

When the ftp consumer is attempt to delete the remote files, some strange
errors occur. These errors does not always happen.

In 50 tests,

>  - 46/50 => [Normal]
> org.apache.camel.component.file.GenericFileOperationFailedException:
> Cannot delete file: RemoteFile[test.txt]
>  - 4/50 => [Abnormal]
> org.apache.camel.component.file.GenericFileOperationFailedException:
> File operation failed: 550 CWD failed. "/timtest/timtest": directory
> not found.  Cannot change directory to: delete_test. Code: 550

Camel version: 2.17.0

----------

Error

    20161110 15:36:32.391 [Camel (routeLoader_route) thread #8 -
inboundRecieveThread] INFO inboundGenericErrHandler - ERR-2000-IG000-ST :
inbound Stack Trace:
org.apache.camel.component.file.GenericFileOperationFailedException: File
operation failed: 550 CWD failed. "/timtest/timtest": directory not found.
     Cannot change directory to: delete_test. Code: 550
        at
org.apache.camel.component.file.remote.FtpOperations.doChangeDirectory(FtpOperations.java:778)
        at
org.apache.camel.component.file.remote.FtpOperations.changeCurrentDirectory(FtpOperations.java:756)
        at
org.apache.camel.component.file.remote.FtpOperations.deleteFile(FtpOperations.java:245)
        at
org.apache.camel.component.file.strategy.GenericFileDeleteProcessStrategy.commit(GenericFileDeleteProcessStrategy.java:71)
        at
org.apache.camel.component.file.GenericFileOnCompletion.processStrategyCommit(GenericFileOnCompletion.java:127)
        at
org.apache.camel.component.file.GenericFileOnCompletion.onCompletion(GenericFileOnCompletion.java:83)
        at
org.apache.camel.component.file.GenericFileOnCompletion.onComplete(GenericFileOnCompletion.java:57)
        at
org.apache.camel.util.UnitOfWorkHelper.doneSynchronizations(UnitOfWorkHelper.java:104)
        at
org.apache.camel.impl.DefaultUnitOfWork.done(DefaultUnitOfWork.java:229)
        at
org.apache.camel.util.UnitOfWorkHelper.doneUow(UnitOfWorkHelper.java:65)
        at
org.apache.camel.processor.CamelInternalProcessor$UnitOfWorkProcessorAdvice.after(CamelInternalProcessor.java:654)
        at
org.apache.camel.processor.CamelInternalProcessor$UnitOfWorkProcessorAdvice.after(CamelInternalProcessor.java:609)
        at
org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:239)
        at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:148)
        at
org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:250)
        at
org.apache.camel.processor.RedeliveryErrorHandler$1.done(RedeliveryErrorHandler.java:480)
        at
org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:86)
        at
org.apache.camel.processor.SendProcessor$1.done(SendProcessor.java:155)
        at
org.apache.camel.component.directvm.DirectVmProcessor$1.done(DirectVmProcessor.java:63)
        at
org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:250)
        at
org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:250)
        at
org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:86)
        at
org.apache.camel.processor.TryProcessor$1.done(TryProcessor.java:141)
        at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:148)
        at
org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:250)
        at
org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:86)
        at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:148)
        at
org.apache.camel.processor.ThreadsProcessor$ProcessCall.run(ThreadsProcessor.java:85)
        at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
    
    20161110 15:36:32.391 [Camel (routeLoader_route) thread #9 -
inboundRecieveThread] INFO inboundGenericErrHandler - ERR-2000-IG000-ST :
inbound Stack Trace:
org.apache.camel.component.file.GenericFileOperationFailedException: File
operation failed: 550 CWD failed. "/delete_test": directory not found.
     Cannot change directory to: delete_test. Code: 550
        at
org.apache.camel.component.file.remote.FtpOperations.doChangeDirectory(FtpOperations.java:778)
        at
org.apache.camel.component.file.remote.FtpOperations.changeCurrentDirectory(FtpOperations.java:756)
        at
org.apache.camel.component.file.remote.FtpOperations.deleteFile(FtpOperations.java:245)
        at
org.apache.camel.component.file.strategy.GenericFileDeleteProcessStrategy.commit(GenericFileDeleteProcessStrategy.java:71)
        at
org.apache.camel.component.file.GenericFileOnCompletion.processStrategyCommit(GenericFileOnCompletion.java:127)
        at
org.apache.camel.component.file.GenericFileOnCompletion.onCompletion(GenericFileOnCompletion.java:83)
        at
org.apache.camel.component.file.GenericFileOnCompletion.onComplete(GenericFileOnCompletion.java:57)
        at
org.apache.camel.util.UnitOfWorkHelper.doneSynchronizations(UnitOfWorkHelper.java:104)
        at
org.apache.camel.impl.DefaultUnitOfWork.done(DefaultUnitOfWork.java:229)
        at
org.apache.camel.util.UnitOfWorkHelper.doneUow(UnitOfWorkHelper.java:65)
        at
org.apache.camel.processor.CamelInternalProcessor$UnitOfWorkProcessorAdvice.after(CamelInternalProcessor.java:654)
        at
org.apache.camel.processor.CamelInternalProcessor$UnitOfWorkProcessorAdvice.after(CamelInternalProcessor.java:609)
        at
org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:239)
        at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:148)
        at
org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:250)
        at
org.apache.camel.processor.RedeliveryErrorHandler$1.done(RedeliveryErrorHandler.java:480)
        at
org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:86)
        at
org.apache.camel.processor.SendProcessor$1.done(SendProcessor.java:155)
        at
org.apache.camel.component.directvm.DirectVmProcessor$1.done(DirectVmProcessor.java:63)
        at
org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:250)
        at
org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:250)
        at
org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:86)
        at
org.apache.camel.processor.TryProcessor$1.done(TryProcessor.java:141)
        at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:148)
        at
org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:250)
        at
org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:86)
        at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:148)
        at
org.apache.camel.processor.ThreadsProcessor$ProcessCall.run(ThreadsProcessor.java:85)
        at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

----------
Related server log

    (000053)11/10/2016 15:36:30 PM - (not logged in) (x.x.x.x)> Connected,
sending welcome message...
    (000053)11/10/2016 15:36:30 PM - (not logged in) (x.x.x.x)>
220-FileZilla Server version 0.9.45 beta
    (000053)11/10/2016 15:36:30 PM - (not logged in) (x.x.x.x)> 220-written
by Tim Kosse (tim.ko...@filezilla-project.org)
    (000053)11/10/2016 15:36:30 PM - (not logged in) (x.x.x.x)> 220 Please
visit http://sourceforge.net/projects/filezilla/
    (000053)11/10/2016 15:36:30 PM - (not logged in) (x.x.x.x)> USER abc+def
    (000053)11/10/2016 15:36:30 PM - (not logged in) (x.x.x.x)> 331 Password
required for abc+def
    (000053)11/10/2016 15:36:30 PM - (not logged in) (x.x.x.x)> PASS ***
    (000053)11/10/2016 15:36:30 PM - abc+def (x.x.x.x)> 230 Logged on
    (000053)11/10/2016 15:36:30 PM - abc+def (x.x.x.x)> TYPE I
    (000053)11/10/2016 15:36:30 PM - abc+def (x.x.x.x)> 200 Type set to I
    (000053)11/10/2016 15:36:30 PM - abc+def (x.x.x.x)> PWD
    (000053)11/10/2016 15:36:30 PM - abc+def (x.x.x.x)> 257 "/" is current
directory.
    (000053)11/10/2016 15:36:30 PM - abc+def (x.x.x.x)> CWD
timtest/delete_test
    (000053)11/10/2016 15:36:30 PM - abc+def (x.x.x.x)> 250 CWD successful.
"/timtest/delete_test" is current directory.
    (000053)11/10/2016 15:36:30 PM - abc+def (x.x.x.x)> CWD /
    (000053)11/10/2016 15:36:30 PM - abc+def (x.x.x.x)> 250 CWD successful.
"/" is current directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> NOOP
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 200 OK
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> PWD
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 257 "/" is current
directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> CWD timtest
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 250 CWD successful.
"/timtest" is current directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> CWD delete_test
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 250 CWD successful.
"/timtest/delete_test" is current directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> SYST
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 215 UNIX emulated by
FileZilla
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> PASV
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 227 Entering Passive
Mode (x,x,x,x,250,43)
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> LIST
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 150 Opening data
channel for directory listing of "/timtest/delete_test"
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 226 Successfully
transferred "/timtest/delete_test"
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> CWD /
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 250 CWD successful.
"/" is current directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> PWD
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 257 "/" is current
directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> CWD timtest
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 250 CWD successful.
"/timtest" is current directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> CWD delete_test
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 250 CWD successful.
"/timtest/delete_test" is current directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> PASV
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 227 Entering Passive
Mode (x,x,x,x,250,45)
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> RETR test - Copy.txt
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 150 Opening data
channel for file download from server of "/timtest/delete_test/test -
Copy.txt"
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 226 Successfully
transferred "/timtest/delete_test/test - Copy.txt"
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> CWD /
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 250 CWD successful.
"/" is current directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> PWD
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 257 "/" is current
directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> CWD timtest
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 250 CWD successful.
"/timtest" is current directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> CWD delete_test
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 250 CWD successful.
"/timtest/delete_test" is current directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> PASV
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 227 Entering Passive
Mode (x,x,x,x,250,47)
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> RETR test.txt
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 150 Opening data
channel for file download from server of "/timtest/delete_test/test.txt"
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 226 Successfully
transferred "/timtest/delete_test/test.txt"
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> CWD /
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 250 CWD successful.
"/" is current directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> PWD
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 257 "/" is current
directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> PWD
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 257 "/" is current
directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> CWD timtest
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 250 CWD successful.
"/timtest" is current directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> CWD timtest
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 550 CWD failed.
"/timtest/timtest": directory not found.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> CWD delete_test
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 250 CWD successful.
"/timtest/delete_test" is current directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> CWD /
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 250 CWD successful.
"/" is current directory.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> CWD delete_test
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 550 CWD failed.
"/delete_test": directory not found.
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> CWD /
    (000053)11/10/2016 15:36:31 PM - abc+def (x.x.x.x)> 250 CWD successful.
"/" is current directory.
    (000053)11/10/2016 15:36:40 PM - abc+def (x.x.x.x)> disconnected.

----------

Route Setting

        protected static RouteBuilder createInRouteBuilder(final String routeId,
final String[] uri) throws Exception{
                
                return new RouteBuilder() {
                        @Override
                        public void configure() throws Exception {
                
                                from (uri[0])
                                        .log(routeId)
                                        .routeId(routeId)
                                        .to("direct-vm:ingen.process");
                        }
                };
        }

        <route id="inboundRoute">
                <from uri="direct-vm:ingen.process"/>
                <doTry>
                        <log message="inbound_route - START" 
loggingLevel="INFO" />
                        
                        <threads executorServiceRef="inboundRecieveThreadPool">
                                
                                <recipientList>
                                        <method ref="inProcBean" 
method="dynamicRouteToEMSQueue" />
                                </recipientList>
                        </threads>
                <doCatch>
                        <exception>java.lang.Exception</exception>
                        
                </doCatch>
                <doFinally>
                        <log message="inbound_route - END" loggingLevel="INFO" 
/>
                        <stop/>
                </doFinally>
                </doTry>
        </route>

uri[0] =
ftp://127.0.0.1:21/timtest/delete_test?username=RAW(abc+def)&password=123&binary=true&delete=true&disconnect=false&passiveMode=true&consumer.delay=30000&maxMessagesPerPoll=2



--
View this message in context: 
http://camel.465427.n5.nabble.com/FTP-Consumer-strange-error-when-delete-file-tp5790126.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to