While debugging some other issues I noticed a few minor inconsistencies and suspected logic bugs in the netty handler changes related to netty 4:
1.) Classes (RequestServerHandler, ResponseClientHandler) overriding ChannelInboundHandlerAdapter.exceptionCaught() are still calling getCause() on the passed Throwable even though what's being passed in now is the actual cause instead of a wrapper.
2.) ResponseClientHandler.channelInactive() isn't calling ChannelHandlerContext.fireChannelInactive() like RequestServerHandler does. I believe this is an oversight and not by design.
3.) ResponseClientHandler.exceptionCaught() is gating the LOG.warn() call with a LOG.isDebugEnabled() check. I suspect this gate should be removed so the warning gets logged properly.