Netty on Android - IllegalSelectorException

Trustin Lee trustin at gleamynode.net
Tue Jan 27 23:12:48 EST 2009


(CC'ing the netty-users list)

No problem.  Glad that it helped.  :-)

— Trustin Lee, http://gleamynode.net/



On Tue, Jan 27, 2009 at 7:07 PM, Funk Monk <funkmonk at gmx.net> wrote:
> Hey, thank you very much Trustin! As you may recognized on Twitter, the fix
> did it. It's cool that it's now in the repository too. I'm sorry I haven't
> provided a test project or feedback earlier, but I'm really busy right now.
>
> Thanks again!
>
>
> Am 27.01.2009 um 09:39 schrieb Trustin Lee:
>
>> I have confirmed that an IllegalSelectorException is raised by the
>> Android platform in the emulator.  The problem has been fixed by
>> making sure NIO constraint level auto-detection mechanism swallows all
>> possible throwables during its initialization.  After the fix is
>> applied, my proof-of-concept Android application communicates with a
>> server successfully.  Please check out the latest SVN revision and
>> give it a try.
>>
>> HTH,
>>
>> — Trustin Lee, http://gleamynode.net/
>>
>> On Tue, Jan 20, 2009 at 1:57 AM, Trustin Lee <trustin at gleamynode.net>
>> wrote:
>>>
>>> BTW, it would be great if you could provide a simplistic sample
>>> Android application project (Eclipse project) that reproduces the
>>> problem, although it's just enough if you can modify
>>> NioProviderMetadata.java to swallow all unexpected exceptions.  Please
>>> let me know what the result looks like.
>>>
>>> Thanks in advance,
>>>
>>> — Trustin Lee, http://gleamynode.net/
>>>
>>>
>>>
>>> On Tue, Jan 20, 2009 at 1:39 AM, Trustin Lee <trustin at gleamynode.net>
>>> wrote:
>>>>
>>>> This is a very interesting problem in that IllegalSelectorException is
>>>> supposed to be raised when an attempt is made to register a channel
>>>> with a selector that was not created by the provider that created the
>>>> channel.  Apparently, it seems like you didn't try to change the NIO
>>>> selector provider during the auto-detection process, right? (you
>>>> shouldn't)  I suspect it's a bug of Android.
>>>>
>>>> Could you check out the latest revision of Netty from the SVN
>>>> repository and modify the 301st line of NioProviderMetadata.java to
>>>> catch java.lang.Exception instead of ClosedChannelException to see if
>>>> it works around the problem?
>>>>
>>>> — Trustin Lee, http://gleamynode.net/
>>>>
>>>>
>>>>
>>>> On Sun, Jan 18, 2009 at 10:42 PM, Monk <funkmonk at gmx.net> wrote:
>>>>>
>>>>> Hi,
>>>>> I try to port a Netty client to Android (using Netty 3.1.0 ALPHA3) and
>>>>> ran
>>>>> into some trouble. Especially in this area of the code:
>>>>>
>>>>> private void initClientConnection() {
>>>>>      String host = "10.0.2.2";
>>>>>      int port = 8080;
>>>>>
>>>>>      this.factory =
>>>>>          new NioClientSocketChannelFactory(
>>>>>          Executors.newCachedThreadPool(),
>>>>>          Executors.newCachedThreadPool());
>>>>>
>>>>>      this.bootstrap = new ClientBootstrap(factory);
>>>>>
>>>>>      this.handler = new ClientLogicHandler(this.main);
>>>>>
>>>>>      this.clPipelineFactory = new PipelineFactory(this.handler);
>>>>>      bootstrap.setPipelineFactory(this.clPipelineFactory);
>>>>>
>>>>>      bootstrap.setOption("child.tcpNoDelay", true);
>>>>>      bootstrap.setOption("child.keepAlive", true);
>>>>>      bootstrap.setOption("remoteAddress", new InetSocketAddress(host,
>>>>> port));
>>>>>  }
>>>>>
>>>>> When simply running or debugging my program in the Android emulator
>>>>> (using
>>>>> Eclipse), the following Exception appears:
>>>>>
>>>>> threadid=17: thread exiting with uncaught exception (group=0x40010e28)
>>>>> Uncaught handler: thread Thread-10 exiting due to uncaught exception
>>>>> java.nio.channels.IllegalSelectorException
>>>>>
>>>>>
>>>>> java.nio.channels.spi.AbstractSelectableChannel.register(AbstractSelectableChannel.java:133)
>>>>>
>>>>> java.nio.channels.SelectableChannel.register(SelectableChannel.java:117)
>>>>>
>>>>>
>>>>> org.jboss.netty.channel.socket.nio.NioProviderMetadata$ConstraintLevelAutodetector
>>>>>  .autodetectWithoutTimeout(NioProviderMetadata.java:300)
>>>>>
>>>>>
>>>>> org.jboss.netty.channel.socket.nio.NioProviderMetadata$ConstraintLevelAutodetector$1
>>>>>  .run(NioProviderMetadata.java:242)
>>>>>
>>>>>
>>>>> org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:72)
>>>>> java.lang.Thread.run(Thread.java:935)
>>>>>
>>>>> I ran through it with the debugger and the exception seems to appear
>>>>> when
>>>>> the first NioWorker gets created somewhere in the
>>>>> NioClientSocketChannelFactory constructor which instantiates
>>>>> NioClientSocketPipelineSink.
>>>>>
>>>>> Any suggestions what might be the problem? I would really appreciate
>>>>> your
>>>>> help!
>>>>>
>>>>> --
>>>>> View this message in context:
>>>>> http://n2.nabble.com/Netty-on-Android---IllegalSelectorException-tp2177020p2177020.html
>>>>> Sent from the Netty User Group mailing list archive at Nabble.com.
>>>>>
>>>>> _______________________________________________
>>>>> 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