channelOpen not progressing to channelConnected
===

I have written a toy client/server app in Netty 3.5.3: the server accepts incoming connections from many clients and when the client sends a "start" string the server adds it to a ChannelGroup. In a separate java.util.Timer thread it sends a small string every second to all registered clients using ChannelGroup.write(). The channel pipeline has a logger, an EOL-based framer, a string encoder and decoder and finally the custom handler that adds the client to the channel group in messageReceived. That's it: pretty basic and all written by the book.

Now my problem is that depending on the choice of boss and worker thread pools on the server side things can go awry. A single boss thread is fine but I need, e.g., at least 4 worker threads to accept 50 clients and so on. This manifests itself in client channels not progressing from channelOpen to channelConnected. Even weirder is that on the client side I keep track of progress in this way:

     bootstrap.connect(address).addListener(new ChannelFutureListener() {
            @Override public void operationComplete(ChannelFuture future) {
                if (!future.isSuccess()) return;
                Channel ch = future.getChannel();
                TestUtil.info(logger, ch, "connected");
                Channels.write(ch, "start\n").addListener(new ChannelFutureListener() {
                    @Override public void operationComplete(ChannelFuture future) {
                        Channel ch = future.getChannel();
                        if (!future.isSuccess()) {
                            Channels.close(ch);
                            return; }
                        TestUtil.info(logger, ch, "request sent"); } }); } });

and *every* client prints "connected" and "request sent" yet on the server side, as I said, some of them don't progress past channelOpen.

So I have three questions: what is going on here, is it normal and what is the best way to go about debugging such conditions?