Go to file
Trustin Lee 00853d9453 Fix an event ordering issue
Motivation:

In the early days of 5.0, we merged ChannelInboundHandler and
ChannelOutboundHandler into ChannelHandler, and introduced the
annotation called 'Skip'.  The annotation 'Skip' was introduced to
determine which handler methods are no-op (i.e. simply forwarding the
event to the next handler) so that DefaultChannelHandlerContext doesn't
even need to submit an event-invoking task to an EventExecutor,
significantly reducing the context switches.

However, this introduced a regression for the handlers which implemented
write() but not flush(). Because flush() was skippable for such
handlers, flush() event went through to the next handler before write() does.

To address this problem, we came up with a naive workaround that sets
MASK_FLUSH when MASK_WRITE is set.

Although the previous workaround works fine for many cases, we still
seem to have an event ordering problem.  We keep seeing the intermittant
failure of LocalTransportThreadModelTest.testStagedExecution(), because
other handler methods are still skipped.

Modifications:

We do not skip the execution of handler methods annotated with 'Skip'
unless all inbound methods (or all outbound methods) are marked with
'Skip'.

Result:

This change Brings back the event ordering behavior of 4.x, making
LocalTransportThreadModelTest.testStagedExecution() pass.
2014-05-22 11:14:36 +09:00
all Generate the default JAR to make oss.sonatype.org happy 2014-05-03 17:28:28 +09:00
buffer Fix capacity check bug affecting offheap buffers 2014-05-13 07:25:26 +02:00
codec Use ByteBuf.readSlice(...).retain() to minimize memory copies. 2014-05-10 17:21:06 +02:00
codec-http Adding a general handler for upgrading protocols 2014-05-19 07:30:18 -07:00
codec-http2 Merge branch 'master' of https://github.com/netty/netty into http2 2014-05-21 07:44:18 -07:00
codec-memcache Synchronized between 4.1 and master 2014-04-25 00:36:01 +09:00
codec-socks Correctly handle SocksCmdResponse. Related to #2428 2014-04-30 10:45:14 +02:00
common Checkstyle 2014-05-20 17:38:52 +09:00
example Checkstyle 2014-05-22 10:14:42 +09:00
handler Fix NPE 2014-05-22 10:28:38 +09:00
license Preparation for porting OpenSSL support in 3.10 2014-05-17 20:01:09 +09:00
microbench Upgrade JMH to 0.4.1 and make use of @Params. 2014-02-23 16:39:15 +01:00
tarball [maven-release-plugin] prepare for next development iteration 2013-12-22 22:06:15 +09:00
testsuite Add an OpenSslEngine and the universal API for enabling SSL 2014-05-18 02:33:26 +09:00
transport Fix an event ordering issue 2014-05-22 11:14:36 +09:00
transport-native-epoll Add an OpenSslEngine and the universal API for enabling SSL 2014-05-18 02:33:26 +09:00
transport-rxtx Resurrect channel deregistration and constructor changes 2014-04-24 20:54:50 +09:00
transport-sctp Synchronized between 4.1 and master again (part 2) 2014-04-25 15:07:12 +09:00
transport-udt Synchronized between 4.1 and master again (part 2) 2014-04-25 15:07:12 +09:00
.fbfilter.xml Update license headers 2012-06-04 13:31:44 -07:00
.fbprefs Updated Find Bugs configuration 2009-03-04 10:33:09 +00:00
.gitignore Add JVM crash logs to .gitignore 2014-05-18 21:34:51 +09:00
.travis.yml Travis CI branch whitelisting 2013-03-11 09:55:43 +09:00
CONTRIBUTING.md Move the pull request guide to the developer guide 2014-03-12 13:17:58 +09:00
LICENSE.txt Relicensed to Apache License v2 2009-08-28 07:15:49 +00:00
NOTICE.txt Preparation for porting OpenSSL support in 3.10 2014-05-17 20:01:09 +09:00
pom.xml Add unified NextProtoNego extension support to SslContext 2014-05-21 17:21:18 +09:00
README.md Synchronized between 4.1 and master (part 3) 2014-04-25 16:17:16 +09:00
run-example.sh Update the instruction for running SPDY examples 2014-05-21 17:29:50 +09:00

Netty Project

Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.

How to build

For the detailed information about building and developing Netty, please visit the developer guide. This page only gives very basic information.

You require the following to build Netty:

Note that this is build-time requirement. JDK 5 (for 3.x) or 6 (for 4.0+) is enough to run your Netty-based application.

Branches to look

The 'master' branch is where the development of the latest major version lives on. The development of all other versions takes place in each branch whose name is identical to <majorVersion>.<minorVersion>. For example, the development of 3.9 and 4.0 resides in the branch '3.9' and the branch '4.0' respectively.