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