Go to file
Bryce Anderson 09eed19438 Log expected STREAM_CLOSED exceptions for already closed streams at DEBUG level (#9798)
Motivation:

There is an intrinsic race between a local session resetting a stream
and the peer no longer sending any frames. This can result in the
session receiving frames for a stream that the local peer no longer
tracks. This results in a StreamException being thrown which triggers a
RST_STREAM frame, which is a good thing, but also logging at level WARN,
which is noisy for an expected and benign condition.

Modification:

Change the log level to DEBUG when logging stream errors with code
STREAM_CLOSED. All others are more interesting and will continue to be
logged at level WARN.

Additionally, it was found that DATA frames for streams that could not
have existed only resulted in a StreamException when the spec is clear
that such a situation should be fatal to the connection, resulting in a
GOAWAY(PROTOCOL_ERROR).

Fixes #8025.
2019-11-25 09:01:42 +01:00
.github
.mvn Update to latest recommended maven version (#9785) 2019-11-18 11:03:25 +01:00
all
bom
buffer Reduce ByteBuffer duplication when resizing pooled direct ByteBufs (#9765) 2019-11-16 11:26:02 -08:00
codec Clean up expired docs. (#9756) 2019-11-06 09:43:25 +01:00
codec-dns
codec-haproxy
codec-http Send close frame on channel close, when this frame was not send manually (#9745) 2019-11-18 20:32:21 +01:00
codec-http2 Log expected STREAM_CLOSED exceptions for already closed streams at DEBUG level (#9798) 2019-11-25 09:01:42 +01:00
codec-memcache
codec-mqtt Add constants for fixed-header only MQTT messages (#9749) 2019-11-08 10:17:01 +01:00
codec-redis
codec-smtp
codec-socks
codec-stomp Fix encoding/decoding for UTF-8 stomp commands and headers (#9740) 2019-11-06 12:07:38 +01:00
codec-xml
common Cleanup Recycler to better encapsulate stuff (#9739) 2019-11-04 17:43:53 +01:00
dev-tools
docker
example Fix websocket examples (#9757) 2019-11-06 09:44:29 +01:00
handler Improve java doc for MINIMAL_WAIT (#9779) 2019-11-17 08:35:24 -08:00
handler-proxy
license
microbench Update to latest JMH version (#9787) 2019-11-19 11:28:18 +01:00
resolver
resolver-dns
resolver-dns-native-macos
tarball
testsuite
testsuite-autobahn
testsuite-http2
testsuite-native-image
testsuite-osgi
testsuite-shading
transport Optimize WriteTask recycling (#9800) 2019-11-23 20:45:35 +01:00
transport-blockhound-tests Test that NettyBlockHoundIntegration can be loaded with ServiceLoader (#9743) 2019-11-01 07:07:33 +01:00
transport-native-epoll Remove dependency on GLIBC 2.12 by using syscalls directly (#9797) 2019-11-23 21:12:24 +01:00
transport-native-kqueue Add one new constructor with threadFactory only (#9773) 2019-11-18 09:42:44 +01:00
transport-native-unix-common
transport-native-unix-common-tests
transport-rxtx
transport-sctp
transport-udt
.fbprefs
.gitattributes
.gitignore
CONTRIBUTING.md
LICENSE.txt
mvnw
mvnw.cmd
NOTICE.txt
pom.xml Enable generation of test JARs (#9774) 2019-11-18 09:41:25 +01:00
README.md
run-example.sh

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

Development of all 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.

Usage with JDK 9

Netty can be used in modular JDK9 applications as a collection of automatic modules. The module names follow the reverse-DNS style, and are derived from subproject names rather than root packages due to historical reasons. They are listed below:

  • io.netty.all
  • io.netty.buffer
  • io.netty.codec
  • io.netty.codec.dns
  • io.netty.codec.haproxy
  • io.netty.codec.http
  • io.netty.codec.http2
  • io.netty.codec.memcache
  • io.netty.codec.mqtt
  • io.netty.codec.redis
  • io.netty.codec.smtp
  • io.netty.codec.socks
  • io.netty.codec.stomp
  • io.netty.codec.xml
  • io.netty.common
  • io.netty.handler
  • io.netty.handler.proxy
  • io.netty.resolver
  • io.netty.resolver.dns
  • io.netty.transport
  • io.netty.transport.epoll (native omitted - reserved keyword in Java)
  • io.netty.transport.kqueue (native omitted - reserved keyword in Java)
  • io.netty.transport.unix.common (native omitted - reserved keyword in Java)
  • io.netty.transport.rxtx
  • io.netty.transport.sctp
  • io.netty.transport.udt

Automatic modules do not provide any means to declare dependencies, so you need to list each used module separately in your module-info file.