It was reported to us that the epoll(..) bug workaround creates a new Selector quite to often. So we are currently investigate, please don't upgrade to 3.5.6.Final in the meantime! We will issue a new release as soon as the root cause is found and fixed...
Here you get another bug-fix release out of the 3.5.x Series. It contains a bunch of bug-fixes and also a workaround for an epoll(..) bug that was spotted in recent java versions.
This mentioned epoll(..) bug can lead to very excessive cpu-spinning, which will most likely produce 100% cpu usage on the core that runs the thread of the NioWorker or NioDatagramWorker. For more informations please see #327, #565.
Beside this it also contain a workaround for another jdk bug which could lead to a infinity-loop when using NioClientSocketFactory. For more details please check #535.
One new feature that we also added is the new class OneToOneStrictEncoder. This is a special OneToOneEncoder that guarantee strict ordering of encoding/writing. This is needed if you have some kind of "stream-oriented" encoder and want to write from different threads. One user of this new class is the ZlibEncoder, as before it was possible to get a corrupted "stream" if you wrote bytes from many different threads. See #546 for the full description of the problem.
One last thing to highlight is the possibility to tune the Selector.select(timeout) call. You can adjust the timeout via the System Property org.jboss.netty.selectTimeout . The value is in milli-seconds, default is 10ms. Please keep in mind that setting it to a higher value may delay event notifications, but also can help to keep cpu-usage lower.
For the rest of the fixes please check out our issue tracker.
The JAR file can be found on Maven Central as usually. Beside this you can also get the full tarball from the download page.
Please let us know if you have any problems or questions.