I believe I know what the issue is now. I had a look at the SSLHandler
documentation in Netty:

http://docs.jboss.org/netty/3.1/api/org/jboss/netty/handler/ssl/SslHandler.html

It says the following must be done on reconnect:

"To restart the SSL session, you must remove the existing closed SslHandler 
from the ChannelPipeline, insert a new SslHandler  with a new SSLEngine into
the pipeline, and start the handshake process as described in the first
section."

I don't see this remove/reinitialize of the SSLHandler being done in Netty
currently.

As well, in the Netty Producer I see options being set using the following
calls:

        if (clientBootstrap == null) {
            clientBootstrap = new ClientBootstrap(channelFactory);
            clientBootstrap.setOption("child.keepAlive",
configuration.isKeepAlive());
            clientBootstrap.setOption("child.tcpNoDelay",
configuration.isTcpNoDelay());
            clientBootstrap.setOption("child.reuseAddress",
configuration.isReuseAddress());
            clientBootstrap.setOption("child.connectTimeoutMillis",
configuration.getConnectTimeout());
        }

In the Netty user guide, section 3.1, bubble 3:

http://docs.jboss.org/netty/3.1/guide/html_single/index.html

it indicates that for client connections the "child" prefix is not required.

If someone has a chance to look into these two issues there it would be much
appreciated. If no-one has a chance to look at the issues tonight, I will
have a go in the morning.

thanks in advance,
Gareth



Gareth Collins wrote:
> 
> Hello Claus,
> 
> I am still having some problems. Whilst the connection is re-established,
> I believe the ChannelFuture never indicates that the send completes. I
> believe this is happening because:
> 
> (1) Only one message after establishing the connection again appears to
> start processing.
> 
> (2) When I try to shutdown my executable (kill <pid>) I see the following:
> 
> 2010-05-09 21:42:13,529::DEBUG: 1 inflight and pending exchanges for
> consumer: Consumer[activemq://xxx.yyy]
> 2010-05-09 21:42:13,530::INFO : Waiting as there are still 1 inflight and
> pending exchanges to complete before we can shutdown
> 2010-05-09 21:42:14,533::DEBUG: 1 inflight and pending exchanges for
> consumer: Consumer[activemq://xxx.yyy]
> 2010-05-09 21:42:14,533::INFO : Waiting as there are still 1 inflight and
> pending exchanges to complete before we can shutdown
> 2010-05-09 21:42:15,537::DEBUG: 1 inflight and pending exchanges for
> consumer: Consumer[activemq://xxx.yyy]
> 2010-05-09 21:42:15,538::INFO : Waiting as there are still 1 inflight and
> pending exchanges to complete before we can shutdown
> 2010-05-09 21:42:16,541::DEBUG: 1 inflight and pending exchanges for
> consumer: Consumer[activemq://xxx.yyy]
> 2010-05-09 21:42:16,541::INFO : Waiting as there are still 1 inflight and
> pending exchanges to complete before we can shutdown
> 
> I will play with the camel netty component tomorrow (Monday) and see if I
> can find out why this is occurring.
> 
> thanks again,
> Gareth
> 
> 
> Claus Ibsen-2 wrote:
>> 
>> Hi
>> 
>> I have committed fixes to camel-netty today.
>> 
>> Can you test it on your system. It should now support re-connection
>> and proper shutdown and whatnot.
>> 
>> Mind that I have aligned and added the options so it matches the one
>> we got in camel-mina.
>> eg sync is now default true etc.
>> 
>> Updated wiki page
>> https://cwiki.apache.org/confluence/display/CAMEL/Netty
>> 
>> 
>> On Thu, May 6, 2010 at 11:19 AM, Claus Ibsen <claus.ib...@gmail.com>
>> wrote:
>>> Hi
>>>
>>> I created a couple of tickets to improve/fix camel-netty
>>> https://issues.apache.org/activemq/browse/CAMEL-2698
>>> https://issues.apache.org/activemq/browse/CAMEL-2699
>>>
>>> I got the first one committed, and will work on the 2nd ticket.
>>>
>>>
>>> On Thu, May 6, 2010 at 6:33 AM, Claus Ibsen <claus.ib...@gmail.com>
>>> wrote:
>>>> Hi
>>>>
>>>> Well spotted. Can you create a JIRA ticket ticket for that.
>>>>
>>>>
>>>> On Thu, May 6, 2010 at 6:29 AM, Gareth Collins
>>>> <gareth_coll...@hotmail.com> wrote:
>>>>>
>>>>> Hello,
>>>>>
>>>>> I took a look at the Netty Producer code:
>>>>>
>>>>>    public void process(Exchange exchange) throws Exception {
>>>>>        if (configuration.isSync()) {
>>>>>            countdownLatch = new CountDownLatch(1);
>>>>>        }
>>>>>
>>>>>        Channel channel = channelFuture.getChannel();
>>>>>        channel.write(exchange.getIn().getBody());
>>>>>
>>>>>        if (configuration.isSync()) {
>>>>>            boolean success =
>>>>> countdownLatch.await(configuration.getReceiveTimeoutMillis(),
>>>>> TimeUnit.MILLISECONDS);
>>>>>            if (!success) {
>>>>>                throw new ExchangeTimedOutException(exchange,
>>>>> configuration.getReceiveTimeoutMillis());
>>>>>            }
>>>>>            Object response = ((ClientChannelHandler)
>>>>> clientPipeline.get("handler")).getResponse();
>>>>>            exchange.getOut().setBody(response);
>>>>>        }
>>>>>    }
>>>>>
>>>>> After taking a look at the netty documentation, I don't see how this
>>>>> will
>>>>> detect write failures (as I understand the channel.write() is
>>>>> asynchronous).
>>>>> Don't we need to wait on the ChannelFuture returned from the
>>>>> channel.write()? (i.e.
>>>>>
>>>>> Channel channel = channelFuture.getChannel();
>>>>> ChannelFuture channelWriteFuture =
>>>>> channel.write(exchange.getIn().getBody());
>>>>> channelWriteFuture.awaitUninterruptibly()
>>>>> if (channelWriteFuture.isSuccess() == false)
>>>>> {
>>>>>    // throw some exception
>>>>>    // or possibly if connection closed, try to create connection and
>>>>> send
>>>>> again
>>>>>    // if fails again throw exception
>>>>> }
>>>>>
>>>>> thanks in advance,
>>>>> Gareth Collins
>>>>>
>>>>>
>>>>> --
>>>>> View this message in context:
>>>>> http://old.nabble.com/Recovery-From-Netty-Connection-Drop-tp28467631p28469185.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
>> 
>> 
> 
> 

-- 
View this message in context: 
http://old.nabble.com/Recovery-From-Netty-Connection-Drop-tp28467631p28517718.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to