56bda1b3ae
* Fixes #4855 - Occasional h2spec failures on CI In case of bad usage of the HTTP/2 API, we don't want to close() the stream but just fail the callback, because the stream may be performing actions triggered by a legit API usage. In case of a call to `AsyncListener.onError()`, applications may decide to call AsyncContext.complete() and that would be a correct usage of the Servlet API. This case was not well handled and was wrongly producing a WARN log with an `IllegalStateException`. Completely rewritten `HttpTransportOverHTTP2.TransportCallback`. The rewrite handles correctly asynchronous failures that now are executed sequentially (and not concurrently) with writes. If a write is in progress, the failure will just change the state and at the end of the write a check on the state will determine what actions to take. A session failure is now handled in HTTP2Session by first failing all the streams - which notifies the Stream.Listeners - and then failing the session - which notifies the Session.Listener. The stream failures are executed concurrently by dispatching each one to a different thread; this means that the stream failure callbacks are executed concurrently (likely sending RST_STREAM frames). The session failure callback is completed only when all the stream failure callbacks have completed, to ensure that a GOAWAY frame is processed after all the RST_STREAM frames. Signed-off-by: Simone Bordet <simone.bordet@gmail.com> |
||
---|---|---|
.github | ||
LICENSE-CONTRIBUTOR | ||
advisories | ||
aggregates | ||
apache-jsp | ||
apache-jstl | ||
build-resources | ||
examples | ||
jetty-alpn | ||
jetty-annotations | ||
jetty-ant | ||
jetty-bom | ||
jetty-cdi | ||
jetty-client | ||
jetty-continuation | ||
jetty-deploy | ||
jetty-distribution | ||
jetty-documentation | ||
jetty-fcgi | ||
jetty-gcloud | ||
jetty-hazelcast | ||
jetty-home | ||
jetty-http | ||
jetty-http-spi | ||
jetty-http2 | ||
jetty-infinispan | ||
jetty-io | ||
jetty-jaas | ||
jetty-jaspi | ||
jetty-jmh | ||
jetty-jmx | ||
jetty-jndi | ||
jetty-jspc-maven-plugin | ||
jetty-maven-plugin | ||
jetty-memcached | ||
jetty-nosql | ||
jetty-openid | ||
jetty-osgi | ||
jetty-overlay-deployer | ||
jetty-plus | ||
jetty-proxy | ||
jetty-quickstart | ||
jetty-rewrite | ||
jetty-runner | ||
jetty-security | ||
jetty-server | ||
jetty-servlet | ||
jetty-servlets | ||
jetty-spring | ||
jetty-start | ||
jetty-unixsocket | ||
jetty-util | ||
jetty-util-ajax | ||
jetty-webapp | ||
jetty-websocket | ||
jetty-xml | ||
logos | ||
scripts | ||
tests | ||
.gitattributes | ||
.gitignore | ||
CONTRIBUTING.md | ||
Jenkinsfile | ||
Jmh_Jenkinsfile | ||
KEYS.txt | ||
LICENSE | ||
NOTICE.txt | ||
README.md | ||
VERSION.txt | ||
header-template-doc.txt | ||
header-template-java.txt | ||
pom.xml |
README.md
Eclipse Jetty Canonical Repository
This is the canonical repository for the Jetty project, feel free to fork and contribute now!
Submitting a patch or pull request?
Make sure you have an Eclipse Contributor Agreement (ECA) on file.
Project description
Jetty is a lightweight highly scalable java based web server and servlet engine. Our goal is to support web protocols like HTTP, HTTP/2 and WebSocket in a high volume low latency way that provides maximum performance while retaining the ease of use and compatibility with years of servlet development. Jetty is a modern fully async web server that has a long history as a component oriented technology easily embedded into applications while still offering a solid traditional distribution for webapp deployment.
Documentation
Project documentation is available on the Jetty Eclipse website.
Building
To build, use:
mvn clean install
The Jetty distribution will be built in jetty-distribution/target/distribution
.
The first build may take a longer than expected as Maven downloads all the dependencies.
The build tests do a lot of stress testing, and on some machines it is necessary to set the file descriptor limit to greater than 2048 for the tests to all pass successfully.
It is possible to bypass tests by building with mvn clean install -DskipTests
.
Professional Services
Expert advice and production support are available through Webtide.com.