Observed that some consumers were blocked in Fetcher.listOffset() when starting many dozens of consumer threads at the same time.
Selector.connect(...) calls SocketChannel.connect() in non-blocking mode and assumes that false is always returned and that the channel will be in the Selector's readyKeys once the connection is ready for connect completion due to the OP_CONNECT interest op.
When connect() returns true the channel is fully connected connected and will not be included in readyKeys since only OP_CONNECT is set.
I implemented a fix which handles the case when connect(...) returns true and verified that I no longer see stuck consumers. A git pull request will be forthcoming.