The Netty Team is proud to bring you another bug-fix release of the 3.5.x series. It contains many bug-fixes and improvements plus some new nice handlers that will make your life easier if you use SPDY or plan to-do so.
So important things first..
This release contains an important improvement that helps to bring back the used context-switched to a sane number. This is done by adjust the selectTimeout to the "old" default of 500ms again and introduce the usage of a Timer to handle the Connection-Timeout handling when using Netty in client-mode. It worth to mention that this only effected users of the "NIO Transport". "OIO Transport" users were not effected at all. See #613 and #605 for more details.
You can observe the difference between this release and the previous via the specific tool for your OS.
For example on linux:
# vmstat 1
Another improvements that worth mention is the reducing of "garbage" that is created by the NioWorker if there is no "event" to be processed. It's now a way more friendly to the Garbage-Collector and so lower the pressure on it. See #597 for some more details on the whole issue.
As mention before this release ships a lot bug-fixes. The most important are:
- Fix StackOverflowError in ChunkedWriteHandler. #620 and #621
- Fix IndexOutOfBoundException in CompositeChannelBuffer. #474
- Fix BufferedWriteHandler. #618
- SslHandler may miss to notify write Future if SSLEngine was closed. #601
- SPDY connection upgrade must be done "after" Response was written. #589
Two new ChannelHandler implementations are included. that helps you to use SPDY and HTTP at the same time while provide you with all the "low-level" code. This makes it a lot easier to implement the needed code.
The ChannelHandlers are:
- SpdyHttpResponseStreamIdHandler - ChannelHandler which allow you to re-use your "HTTP ChannelHandlers" without modifications in SPDY
- SpdyOrHttpChooser - Abstract ChannelHandler which you should extend to detect if a Client support SPDY or not. If SPDY is not supported it will add needed ChannelHandlers to the ChannelPipeline to serve it via HTTPs. If SPDY is supported it adds the needed ChannelHandlers for SPDY.
An example usage of SpdyOrHttpChooser, which uses jetty-npn:
The full example of its usage can be found in this repository.
For all of the other changes please checkout our issue tracker.
The JAR file can be found on Maven Central or you can also get the full tarball from the download page. Whatever you prefer...
Please let us know if you have any problems or questions.
We hope you will enjoy this release!