Go to file
Norman Maurer cb85ed9d66 Disable caching of PooledByteBuf for different threads.
Motivation:

We introduced a PoolThreadCache which is used in our PooledByteBufAllocator to reduce the synchronization overhead on PoolArenas when allocate / deallocate PooledByteBuf instances. This cache is used for both the allocation path and deallocation path by:
  - Look for cached memory in the PoolThreadCache for the Thread that tries to allocate a new PooledByteBuf and if one is found return it.
  - Add the memory that is used by a PooledByteBuf to the PoolThreadCache of the Thread that release the PooledByteBuf

This works out very well when all allocation / deallocation is done in the EventLoop as the EventLoop will be used for read and write. On the otherside this can lead to surprising side-effects if the user allocate from outside the EventLoop and and pass the ByteBuf over for writing. The problem here is that the memory will be added to the PoolThreadCache that did the actual write on the underlying transport and not on the Thread that previously allocated the buffer.

Modifications:

Don't cache if different Threads are used for allocating/deallocating

Result:

Less confusing behavior for users that allocate PooledByteBufs from outside the EventLoop.
2014-09-22 13:38:35 +02:00
all [maven-release-plugin] prepare for next development iteration 2014-08-16 03:02:02 +09:00
buffer Disable caching of PooledByteBuf for different threads. 2014-09-22 13:38:35 +02:00
codec Add support for ExtensionRegistryLite in ProtobufDecoder 2014-09-15 07:06:30 +02:00
codec-http Allow to access uri of QueryStringDecoder. Related to [#2896] 2014-09-19 20:06:22 +02:00
codec-socks [maven-release-plugin] prepare for next development iteration 2014-08-16 03:02:02 +09:00
common Don't ignore maxCapacity if it's not a power of 2 2014-08-31 09:11:01 +02:00
example Fix example for Http Upload 2014-08-18 10:49:05 +02:00
handler Fix overriden method not called in TrafficShaping 2014-09-20 20:41:00 +02:00
license Remove license of deque as we not use it anymore 2014-08-04 12:21:33 +02:00
microbench [maven-release-plugin] prepare for next development iteration 2014-08-16 03:02:02 +09:00
tarball [maven-release-plugin] prepare for next development iteration 2014-08-16 03:02:02 +09:00
testsuite Fix buffer leak in DatagramUnicastTest caused by incorrect usage of CompositeByteBuf 2014-09-10 11:40:53 +02:00
transport [#2586] Use correct EventExecutor to notify for bind failures on late registration 2014-08-20 16:32:39 +02:00
transport-native-epoll Fix Native EPOLL Build Failure 2014-09-17 20:59:47 +02:00
transport-rxtx [maven-release-plugin] prepare for next development iteration 2014-08-16 03:02:02 +09:00
transport-sctp [maven-release-plugin] prepare for next development iteration 2014-08-16 03:02:02 +09:00
transport-udt [maven-release-plugin] prepare for next development iteration 2014-08-16 03:02:02 +09: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:37:12 +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:18:14 +09:00
LICENSE.txt Relicensed to Apache License v2 2009-08-28 07:15:49 +00:00
NOTICE.txt Remove license of deque as we not use it anymore 2014-08-04 12:21:33 +02:00
pom.xml [maven-release-plugin] prepare for next development iteration 2014-08-16 03:02:02 +09:00
README.md Add a link to the 'native transports' page 2014-07-21 12:54:43 -07:00
run-example.sh Use a forked exec-maven-plugin instead of maven-antrun-plugin 2014-05-23 20:06:12 +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 major versions takes place in each branch whose name is identical to its major version number. For example, the development of 3.x and 4.x resides in the branch '3' and the branch '4' respectively.