Random connect exceptions

Mike McGrady mmcgrady at topiatechnology.com
Wed Nov 11 09:14:09 EST 2009


Why do you "throw connect except" when the future returns true on the  
isSuccess method?

Sent from my iPhone

On Nov 10, 2009, at 10:36 PM, Christian Migowski  
<chrismfwrd at gmail.com> wrote:

> Hi Shay,
>
> one more question: Is this "no connection timeout" occuring on a
> Windows platform?
>
> regards,
> christian!
>
>
> On Mon, Nov 9, 2009 at 12:45 PM, Christian Migowski
> <chrismfwrd at gmail.com> wrote:
>> I have no idea then. I tried to have a look in the Netty code to see
>> something obvious but I am not familiar enough with NIO to understand
>> what is going on there. Maybe Trustin has an idea.
>>
>>
>> On Mon, Nov 9, 2009 at 9:54 AM, Shay Banon <kimchy at gmail.com> wrote:
>>> Yes, other connections do seem to work. Subsequent connections also
>>> seem to work...  (when I have the timeout enabled). I added a simple
>>> retry mechanism which seems to make this problem go away (with a  
>>> limit
>>> of 10 times), though it works around the problem, not solve it.
>>>
>>> On Mon, Nov 9, 2009 at 9:22 AM, Christian Migowski <chrismfwrd at gmail.com 
>>> > wrote:
>>>> Hi Shay,
>>>>
>>>> when a connection attempt hangs, can you connect to the server with
>>>> another instance of your application?
>>>> Before you changed the code to wait until finished, were subsequent
>>>> connection attempts (after a failed one) successful?
>>>>
>>>>
>>>> christian!
>>>>
>>>>
>>>>
>>>> On Sun, Nov 8, 2009 at 11:22 AM, Shay Banon <kimchy at gmail.com>  
>>>> wrote:
>>>>> Here is the client bootstrap initialization:
>>>>>
>>>>>        clientBootstrap = new ClientBootstrap(new
>>>>> NioClientSocketChannelFactory(new VirtualExecutorService 
>>>>> (threadPool),
>>>>> new VirtualExecutorService(threadPool)));
>>>>>
>>>>>        ChannelPipelineFactory clientPipelineFactory = new
>>>>> ChannelPipelineFactory() {
>>>>>            @Override public ChannelPipeline getPipeline() throws  
>>>>> Exception {
>>>>>                ChannelPipeline pipeline = Channels.pipeline();
>>>>>                pipeline.addLast("decoder", new  
>>>>> SizeHeaderFrameDecoder());
>>>>>                pipeline.addLast("dispatcher", new
>>>>> MessageChannelHandler(NettyTransport.this));
>>>>>                return pipeline;
>>>>>            }
>>>>>        };
>>>>>
>>>>>        clientBootstrap.setPipelineFactory(clientPipelineFactory);
>>>>>
>>>>>        clientBootstrap.setOption("connectTimeoutMillis",
>>>>> connectTimeout.millis());
>>>>>
>>>>> And here is the connect operation:
>>>>>
>>>>>                ChannelFuture channelFuture =  
>>>>> clientBootstrap.connect(address);
>>>>>                channelFuture.awaitUninterruptibly();
>>>>>                if (!channelFuture.isSuccess()) {
>>>>>                       // throw connect excep
>>>>>                }
>>>>>                return channelFuture.getChannel();
>>>>>
>>>>> The server is a netty server bound to 0.0.0.0, and the address  
>>>>> it to
>>>>> connect to is the local ip address (as derived by java, for  
>>>>> example,
>>>>> 192.168....).
>>>>>
>>>>> Shay
>>>>>
>>>>>
>>>>> On Sun, Nov 8, 2009 at 11:22 AM, Trustin Lee (이희승) <trustin at gma 
>>>>> il.com> wrote:
>>>>>> Perhaps it might be a bug.  I will investigate a little bit more.
>>>>>> Could you paste the whole bootstrap initialization and connection
>>>>>> attempt code?
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> — Trustin Lee, http://gleamynode.net/
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Sun, Nov 8, 2009 at 5:38 PM, Shay Banon <kimchy at gmail.com>  
>>>>>> wrote:
>>>>>>> I see. Now, when I try with waiting without any timeout value
>>>>>>> (channelFuture.awaitUninterruptibly()), then it simply hangs  
>>>>>>> without
>>>>>>> returning. I do set the connectionTimeoutMillis... :
>>>>>>>
>>>>>>> clientBootstrap.setOption("connectTimeoutMillis",  
>>>>>>> connectTimeout.millis());
>>>>>>>
>>>>>>> and it is set to 1 second.
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Shay
>>>>>>>
>>>>>>> On Sat, Nov 7, 2009 at 5:09 PM, Trustin Lee (이희승) <trustin at gma 
>>>>>>> il.com> wrote:
>>>>>>>> If you have specified connectTimeoutMillis option correctly,  
>>>>>>>> you
>>>>>>>> should not specify the timeout value when you call
>>>>>>>> ChannelFuture.await().  ChannelFuture will complete  
>>>>>>>> automatically on
>>>>>>>> connection timeout.
>>>>>>>>
>>>>>>>> You cannot assume that the connection attempt has failed if
>>>>>>>> ChannelFuture.isSuccess() returned false because it might  
>>>>>>>> also mean
>>>>>>>> that the connection attempt is still in progress.  To make  
>>>>>>>> sure that
>>>>>>>> the connection attempt is finished, you have to await the  
>>>>>>>> future until
>>>>>>>> its completion.  If ChannelFuture is complete,  
>>>>>>>> ChannelFuture.isDone()
>>>>>>>> returns true.
>>>>>>>>
>>>>>>>> HTH
>>>>>>>>
>>>>>>>> — Trustin Lee, http://gleamynode.net/
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Nov 3, 2009 at 11:49 PM, Shay Banon  
>>>>>>>> <kimchy at gmail.com> wrote:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>>  First of all, thanks for the reply. I have added the  
>>>>>>>>> connectTimeout
>>>>>>>>> option as you suggested, and it does not seem to help. Even  
>>>>>>>>> when I set
>>>>>>>>> it to a higher value, it simply waits there until the  
>>>>>>>>> timeout passed,
>>>>>>>>> and then the channelFuture#isSuccess is false. I still don't  
>>>>>>>>> get the
>>>>>>>>> actual cause as well. I am using netty version 3.1.5.
>>>>>>>>>
>>>>>>>>>  What is the scenario that the cause of the future is null?
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Shay
>>>>>>>>>
>>>>>>>>> On Tue, Nov 3, 2009 at 1:41 PM, Christian Migowski <chrismfwrd at gmail.com 
>>>>>>>>> > wrote:
>>>>>>>>>> Hi Shay,
>>>>>>>>>>
>>>>>>>>>> the code looks OK, but two things:
>>>>>>>>>>
>>>>>>>>>> 1) did you set the connectTimeout to the bootstrap, i.e.
>>>>>>>>>>
>>>>>>>>>>  clientBootstrap.setOption 
>>>>>>>>>> ("connectTimeoutMillis",connectTimeout.millis());
>>>>>>>>>>
>>>>>>>>>> if no that might be the reason: the connection attempt is  
>>>>>>>>>> just not finished yet
>>>>>>>>>>
>>>>>>>>>> 2) if yes do you use the latest Netty version? The NIO  
>>>>>>>>>> transport in
>>>>>>>>>> versions prior to 3.1.4 (if i remember correctly) did not  
>>>>>>>>>> respect the
>>>>>>>>>> connect timeout.
>>>>>>>>>>
>>>>>>>>>> hth,
>>>>>>>>>> regards,
>>>>>>>>>> christian!
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Tue, Nov 3, 2009 at 12:19 PM, Shay Banon  
>>>>>>>>>> <kimchy at gmail.com> wrote:
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>>  I am getting random connect failures when using netty,  
>>>>>>>>>>> which I am
>>>>>>>>>>> trying to track down the cause of it. First, here is the  
>>>>>>>>>>> code I use to
>>>>>>>>>>> connect:
>>>>>>>>>>>
>>>>>>>>>>>            InetSocketAddress address = // obtain the  
>>>>>>>>>>> address to connect to
>>>>>>>>>>>            ChannelFuture channelFuture =  
>>>>>>>>>>> clientBootstrap.connect(address);
>>>>>>>>>>>            channelFuture.awaitUninterruptibly 
>>>>>>>>>>> (connectTimeout.millis());
>>>>>>>>>>> // connect timeout is 1 second
>>>>>>>>>>>            if (!channelFuture.isSuccess()) {
>>>>>>>>>>>                throw new ConnectTransportException 
>>>>>>>>>>> (address, "",
>>>>>>>>>>> channelFuture.getCause());
>>>>>>>>>>>            }
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> First, is this code fragment correct, or am I missing  
>>>>>>>>>>> something?
>>>>>>>>>>> Second, the strange thing I get is that the  
>>>>>>>>>>> channelFuture.getCause()
>>>>>>>>>>> is null .., so I don't really know the underlying problem  
>>>>>>>>>>> here.
>>>>>>>>>>>
>>>>>>>>>>> Any idea?
>>>>>>>>>>>
>>>>>>>>>>> Cheers,
>>>>>>>>>>> Shay
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> netty-users mailing list
>>>>>>>>>>> netty-users at lists.jboss.org
>>>>>>>>>>> https://lists.jboss.org/mailman/listinfo/netty-users
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> netty-users mailing list
>>>>>>>>>> netty-users at lists.jboss.org
>>>>>>>>>> https://lists.jboss.org/mailman/listinfo/netty-users
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> netty-users mailing list
>>>>>>>>> netty-users at lists.jboss.org
>>>>>>>>> https://lists.jboss.org/mailman/listinfo/netty-users
>>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> netty-users mailing list
>>>>>>>> netty-users at lists.jboss.org
>>>>>>>> https://lists.jboss.org/mailman/listinfo/netty-users
>>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> netty-users mailing list
>>>>>>> netty-users at lists.jboss.org
>>>>>>> https://lists.jboss.org/mailman/listinfo/netty-users
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> netty-users mailing list
>>>>>> netty-users at lists.jboss.org
>>>>>> https://lists.jboss.org/mailman/listinfo/netty-users
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> netty-users mailing list
>>>>> netty-users at lists.jboss.org
>>>>> https://lists.jboss.org/mailman/listinfo/netty-users
>>>>>
>>>>
>>>> _______________________________________________
>>>> netty-users mailing list
>>>> netty-users at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/netty-users
>>>>
>>>
>>> _______________________________________________
>>> netty-users mailing list
>>> netty-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/netty-users
>>>
>>
>
> _______________________________________________
> netty-users mailing list
> netty-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/netty-users



More information about the netty-users mailing list