You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by harinair <ha...@hotmail.com> on 2009/11/18 21:00:29 UTC

Camel 1.6.0 FTP fails with 421 on the first attempt

Hi All:

I currently push XML files to clients using Camel FTP component. I find that
the module fails to send a file on the first try since the server closed
connection (FTP response 421). My guess is Camel is keeping the connection
open and the server is closing connection on inactivity. Hence in almost
every send, there is an Exception and the second retry sends the file
successfully. Is there any way to change the way this works?? How can we
avoid this exception... or should I just ignore it? The Exception trace
given below.

Hari Gangadharan


2009-11-17 22:14:44,367 [DefaultMessageListenerContainer-1599187] ERROR
org.apache.camel.processor.DeadLetterChannel - Failed delivery for
exchangeId: ID-dic
k.glpconnect.com/64102-1256857713203/0-47328. On delivery attempt: 0 caught:
org.apache.commons.net.ftp.FTPConnectionClosedException: FTP response 421
received.  Server closed connection.
org.apache.commons.net.ftp.FTPConnectionClosedException: FTP response 421
received.  Server closed connection.
        at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:346)
        at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:490)
        at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:534)
        at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:583)
        at org.apache.commons.net.ftp.FTP.pwd(FTP.java:1270)
        at
org.apache.commons.net.ftp.FTPClient.printWorkingDirectory(FTPClient.java:1800)
        at
org.apache.camel.component.file.remote.FtpUtils.buildDirectory(FtpUtils.java:83)
        at
org.apache.camel.component.file.remote.FtpProducer.process(FtpProducer.java:98)
        at
org.apache.camel.component.file.remote.FtpProducer.process(FtpProducer.java:51)
        at
org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:190)
        at
org.apache.camel.processor.RecipientList.sendToRecipientList(RecipientList.java:75)
        at
org.apache.camel.processor.RecipientList.process(RecipientList.java:59)
        at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:80)
        at
org.apache.camel.processor.interceptor.StreamCachingInterceptor.proceed(StreamCachingInterceptor.java:87)
        at
org.apache.camel.processor.interceptor.StreamCachingInterceptor.process(StreamCachingInterceptor.java:82)
        at
org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:189)
        at
org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:133)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:115)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:89)
        at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68)
        at
org.apache.camel.processor.interceptor.StreamCachingInterceptor.proceed(StreamCachingInterceptor.java:87)
        at
org.apache.camel.processor.interceptor.StreamCachingInterceptor.process(StreamCachingInterceptor.java:82)
        at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:52)
        at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:41)
        at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:66)
        at
org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:72)
        at
org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:543)
        at
org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:482)
        at
org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451)
        at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323)
        at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261)
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:9
82)
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:881)
        at java.lang.Thread.run(Thread.java:595)

-- 
View this message in context: http://old.nabble.com/Camel-1.6.0-FTP-fails-with-421-on-the-first-attempt-tp26414647p26414647.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Re: Camel 1.6.0 FTP fails on the first attempt

Posted by Claus Ibsen <cl...@gmail.com>.
On Wed, Nov 18, 2009 at 9:00 PM, harinair <ha...@hotmail.com> wrote:
>
> Hi All:
>
> I currently push XML files to clients using Camel FTP component. I find that
> the module fails to send a file on the first try since the server closed
> connection (FTP response 421). My guess is Camel is keeping the connection
> open and the server is closing connection on inactivity. Hence in almost
> every send, there is an Exception and the second retry sends the file
> successfully. Is there any way to change the way this works?? How can we
> avoid this exception... or should I just ignore it? The Exception trace
> given below.

Its improved in Camel 2.1 which can recover such a situation.

In 1.x this feature is not present but the Camel error handling by
default will take of it and redeliver.
So in 1.x you should "just ignore it".

However you are welcome to take a stab at packporting or fixing this
in 1.x and provide a patch to JIRA.


>
> Hari Gangadharan
>
>
> 2009-11-17 22:14:44,367 [DefaultMessageListenerContainer-1599187] ERROR
> org.apache.camel.processor.DeadLetterChannel - Failed delivery for
> exchangeId: ID-dic
> k.glpconnect.com/64102-1256857713203/0-47328. On delivery attempt: 0 caught:
> org.apache.commons.net.ftp.FTPConnectionClosedException: FTP response 421
> received.  Server closed connection.
> org.apache.commons.net.ftp.FTPConnectionClosedException: FTP response 421
> received.  Server closed connection.
>        at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:346)
>        at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:490)
>        at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:534)
>        at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:583)
>        at org.apache.commons.net.ftp.FTP.pwd(FTP.java:1270)
>        at
> org.apache.commons.net.ftp.FTPClient.printWorkingDirectory(FTPClient.java:1800)
>        at
> org.apache.camel.component.file.remote.FtpUtils.buildDirectory(FtpUtils.java:83)
>        at
> org.apache.camel.component.file.remote.FtpProducer.process(FtpProducer.java:98)
>        at
> org.apache.camel.component.file.remote.FtpProducer.process(FtpProducer.java:51)
>        at
> org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:190)
>        at
> org.apache.camel.processor.RecipientList.sendToRecipientList(RecipientList.java:75)
>        at
> org.apache.camel.processor.RecipientList.process(RecipientList.java:59)
>        at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:80)
>        at
> org.apache.camel.processor.interceptor.StreamCachingInterceptor.proceed(StreamCachingInterceptor.java:87)
>        at
> org.apache.camel.processor.interceptor.StreamCachingInterceptor.process(StreamCachingInterceptor.java:82)
>        at
> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:189)
>        at
> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:133)
>        at org.apache.camel.processor.Pipeline.process(Pipeline.java:115)
>        at org.apache.camel.processor.Pipeline.process(Pipeline.java:89)
>        at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68)
>        at
> org.apache.camel.processor.interceptor.StreamCachingInterceptor.proceed(StreamCachingInterceptor.java:87)
>        at
> org.apache.camel.processor.interceptor.StreamCachingInterceptor.process(StreamCachingInterceptor.java:82)
>        at
> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:52)
>        at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:41)
>        at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:66)
>        at
> org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:72)
>        at
> org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:543)
>        at
> org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:482)
>        at
> org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451)
>        at
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323)
>        at
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261)
>        at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:9
> 82)
>        at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:881)
>        at java.lang.Thread.run(Thread.java:595)
>
> --
> View this message in context: http://old.nabble.com/Camel-1.6.0-FTP-fails-on-the-first-attempt-tp26414647p26414647.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