From 84700530e645e812b336747464d6fbbf370c9a20 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Tue, 13 Aug 2019 16:13:21 -0500 Subject: [PATCH 1/7] Updating to version 9.4.20.v20190813 --- VERSION.txt | 49 ++++++- aggregates/jetty-all-compact3/pom.xml | 2 +- aggregates/jetty-all/pom.xml | 2 +- apache-jsp/pom.xml | 2 +- apache-jstl/pom.xml | 2 +- build-resources/pom.xml | 2 +- examples/async-rest/async-rest-jar/pom.xml | 2 +- examples/async-rest/async-rest-webapp/pom.xml | 2 +- examples/async-rest/pom.xml | 2 +- examples/embedded/pom.xml | 2 +- examples/pom.xml | 2 +- jetty-alpn/jetty-alpn-client/pom.xml | 2 +- .../jetty-alpn-conscrypt-client/pom.xml | 2 +- .../jetty-alpn-conscrypt-server/pom.xml | 2 +- jetty-alpn/jetty-alpn-java-client/pom.xml | 2 +- jetty-alpn/jetty-alpn-java-server/pom.xml | 2 +- jetty-alpn/jetty-alpn-openjdk8-client/pom.xml | 2 +- jetty-alpn/jetty-alpn-openjdk8-server/pom.xml | 2 +- jetty-alpn/jetty-alpn-server/pom.xml | 2 +- jetty-alpn/pom.xml | 2 +- jetty-annotations/pom.xml | 2 +- jetty-ant/pom.xml | 2 +- jetty-bom/pom.xml | 132 +++++++++--------- jetty-cdi/pom.xml | 2 +- jetty-client/pom.xml | 2 +- jetty-continuation/pom.xml | 2 +- jetty-deploy/pom.xml | 2 +- jetty-distribution/pom.xml | 2 +- jetty-documentation/pom.xml | 2 +- jetty-fcgi/fcgi-client/pom.xml | 2 +- jetty-fcgi/fcgi-server/pom.xml | 2 +- jetty-fcgi/pom.xml | 2 +- .../jetty-gcloud-session-manager/pom.xml | 2 +- jetty-gcloud/pom.xml | 2 +- jetty-hazelcast/pom.xml | 2 +- jetty-home/pom.xml | 2 +- jetty-http-spi/pom.xml | 2 +- jetty-http/pom.xml | 2 +- jetty-http2/http2-alpn-tests/pom.xml | 2 +- jetty-http2/http2-client/pom.xml | 2 +- jetty-http2/http2-common/pom.xml | 2 +- jetty-http2/http2-hpack/pom.xml | 2 +- .../http2-http-client-transport/pom.xml | 2 +- jetty-http2/http2-server/pom.xml | 2 +- jetty-http2/pom.xml | 2 +- jetty-infinispan/infinispan-common/pom.xml | 2 +- .../infinispan-embedded-query/pom.xml | 2 +- jetty-infinispan/infinispan-embedded/pom.xml | 2 +- .../infinispan-remote-query/pom.xml | 2 +- jetty-infinispan/infinispan-remote/pom.xml | 2 +- jetty-infinispan/pom.xml | 2 +- jetty-io/pom.xml | 2 +- jetty-jaas/pom.xml | 2 +- jetty-jaspi/pom.xml | 2 +- jetty-jmh/pom.xml | 2 +- jetty-jmx/pom.xml | 2 +- jetty-jndi/pom.xml | 2 +- jetty-jspc-maven-plugin/pom.xml | 2 +- jetty-maven-plugin/pom.xml | 2 +- .../jetty-memcached-sessions/pom.xml | 2 +- jetty-memcached/pom.xml | 2 +- jetty-nosql/pom.xml | 2 +- jetty-osgi/jetty-osgi-alpn/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot-jsp/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot-warurl/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot/pom.xml | 2 +- jetty-osgi/jetty-osgi-httpservice/pom.xml | 2 +- jetty-osgi/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-context/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-fragment/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-server/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-webapp/pom.xml | 2 +- jetty-osgi/test-jetty-osgi/pom.xml | 2 +- jetty-plus/pom.xml | 2 +- jetty-proxy/pom.xml | 2 +- jetty-quickstart/pom.xml | 2 +- jetty-rewrite/pom.xml | 2 +- jetty-runner/pom.xml | 2 +- jetty-security/pom.xml | 2 +- jetty-server/pom.xml | 2 +- jetty-servlet/pom.xml | 2 +- jetty-servlets/pom.xml | 2 +- jetty-spring/pom.xml | 2 +- jetty-start/pom.xml | 2 +- jetty-unixsocket/pom.xml | 2 +- jetty-util-ajax/pom.xml | 2 +- jetty-util/pom.xml | 2 +- jetty-webapp/pom.xml | 2 +- .../javax-websocket-client-impl/pom.xml | 2 +- .../javax-websocket-server-impl/pom.xml | 2 +- jetty-websocket/jetty-websocket-tests/pom.xml | 2 +- jetty-websocket/pom.xml | 2 +- jetty-websocket/websocket-api/pom.xml | 2 +- jetty-websocket/websocket-client/pom.xml | 2 +- jetty-websocket/websocket-common/pom.xml | 2 +- jetty-websocket/websocket-server/pom.xml | 2 +- jetty-websocket/websocket-servlet/pom.xml | 2 +- jetty-xml/pom.xml | 2 +- pom.xml | 2 +- tests/pom.xml | 2 +- tests/test-continuation/pom.xml | 2 +- tests/test-distribution/pom.xml | 2 +- tests/test-http-client-transport/pom.xml | 2 +- tests/test-integration/pom.xml | 2 +- tests/test-jmx/jmx-webapp-it/pom.xml | 2 +- tests/test-jmx/jmx-webapp/pom.xml | 2 +- tests/test-jmx/pom.xml | 2 +- tests/test-loginservice/pom.xml | 2 +- tests/test-quickstart/pom.xml | 2 +- tests/test-sessions/pom.xml | 2 +- .../test-sessions/test-file-sessions/pom.xml | 2 +- .../test-gcloud-sessions/pom.xml | 2 +- .../test-hazelcast-sessions/pom.xml | 2 +- .../test-infinispan-sessions/pom.xml | 2 +- .../test-sessions/test-jdbc-sessions/pom.xml | 2 +- .../test-memcached-sessions/pom.xml | 2 +- .../test-mongodb-sessions/pom.xml | 2 +- .../test-sessions-common/pom.xml | 2 +- tests/test-webapps/pom.xml | 2 +- .../test-cdi-common-webapp/pom.xml | 2 +- tests/test-webapps/test-felix-webapp/pom.xml | 2 +- tests/test-webapps/test-http2-webapp/pom.xml | 2 +- tests/test-webapps/test-jaas-webapp/pom.xml | 2 +- tests/test-webapps/test-jetty-webapp/pom.xml | 2 +- tests/test-webapps/test-jndi-webapp/pom.xml | 2 +- .../test-webapps/test-mock-resources/pom.xml | 2 +- .../test-webapps/test-owb-cdi-webapp/pom.xml | 2 +- tests/test-webapps/test-proxy-webapp/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/pom.xml | 2 +- .../test-container-initializer/pom.xml | 2 +- .../test-spec-webapp/pom.xml | 2 +- .../test-web-fragment/pom.xml | 2 +- tests/test-webapps/test-simple-webapp/pom.xml | 2 +- .../test-webapps/test-webapp-rfc2616/pom.xml | 2 +- .../test-webapps/test-weld-cdi-webapp/pom.xml | 2 +- 135 files changed, 245 insertions(+), 202 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index c2622739a61..ef82b01e0ba 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,11 +1,54 @@ -jetty-9.4.20-SNAPSHOT +jetty-9.4.20.v20190813 - 13 August 2019 + + 300 Implement Deflater / Inflater Object Pool + + 2061 WebSocket hangs in blockingWrite + + 3601 HTTP2 stall on reset streams + + 3648 javax.websocket client container incorrectly creates Server + SslContextFactory + + 3698 Missing WebSocket ServerContainer after server restart + + 3700 stackoverflow in WebAppClassLoaderUrlStreamTest + + 3708 Swap various java.lang.String replace() methods for better performant + ones + + 3731 Add testing of CDI behaviors + + 3736 NPE from WebAppClassLoader during CDI + + 3746 ClassCastException in WriteFlusher.java - IdleState cannot be cast to + FailedState + + 3749 Memory leak while processing AsyncListener annotations + + 3755 ServerWithAnnotations doesn't do anything + + 3758 Avoid sending empty trailer frames for http/2 requests + + 3782 X-Forwarded-Port overrides X-Forwarded-For + + 3786 ALPN support for Java 14 + + 3798 ClasspathPattern match method throws NPE. URI can be null + + 3799 Programmatically added listeners from + ServletContextListener.contextInitialzed() are not called + + 3804 Weld/CDI XML backwards compat + + 3805 XmlConfiguration odd behavior for numbers + + 3806 The error page handler didn't process correctly in proxy + + 3815 PropertyFileLoginModule adds user principle as a role + + 3822 trustAll will not work on some servers + + 3829 Avoid sending empty trailer frames for http/2 responses + + 3835 WebSocketSession are not being stopped properly + + 3840 Byte-range request performance problems with large files + + 3856 Different behaviour with maxFormContentSize=0 if Content-Length header + is present/missing + + 3876 WebSocketPartialListener is only called for initial frames, not for + continuation frames + + 3884 @WebSocket without @OnWebSocketMessage handler fails when receiving a + continuation frame + + 3888 BufferUtil.toBuffer(Resource resource,boolean direct) does not like + large (4G+) Resources + + 3906 Fix for #3840 breaks Path encapsulation in PathResource + + 3929 Deadlock between new HTTP2Connection() and Server.stop() + + 3940 Double initialization of Log + + 3957 CustomRequestLog bad usage of MethodHandles.lookup() + + 3960 Fix HttpConfiguration copy constructor + + 3969 X-Forwarded-Port header customization isn't possible jetty-9.4.19.v20190610 - 10 June 2019 + 2909 Remove B64Code + 3332 jetty-maven-plugin - transitive dependencies not loaded from "target/classes" - + 3498 WebSocket Session.suspend() now suspends incoming frames instead - of reads + + 3498 WebSocket Session.suspend() now suspends incoming frames instead of + reads + 3534 Use System nanoTime, not currentTimeMillis for IdleTimeout + 3550 Server becomes unresponsive after sitting idle from a load spike + 3562 InetAccessHandler should be able to apply to a certain port or diff --git a/aggregates/jetty-all-compact3/pom.xml b/aggregates/jetty-all-compact3/pom.xml index 93c6781f227..397b0d3a737 100644 --- a/aggregates/jetty-all-compact3/pom.xml +++ b/aggregates/jetty-all-compact3/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 ../../pom.xml 4.0.0 diff --git a/aggregates/jetty-all/pom.xml b/aggregates/jetty-all/pom.xml index 35b4e5e7d17..1143eda8b07 100644 --- a/aggregates/jetty-all/pom.xml +++ b/aggregates/jetty-all/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 ../../pom.xml 4.0.0 diff --git a/apache-jsp/pom.xml b/apache-jsp/pom.xml index fba76a50c47..6bb34fd8f85 100644 --- a/apache-jsp/pom.xml +++ b/apache-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 apache-jsp diff --git a/apache-jstl/pom.xml b/apache-jstl/pom.xml index 1a99ced250a..a2a56a4fd18 100644 --- a/apache-jstl/pom.xml +++ b/apache-jstl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 apache-jstl diff --git a/build-resources/pom.xml b/build-resources/pom.xml index f73305938f3..46fa73518f5 100644 --- a/build-resources/pom.xml +++ b/build-resources/pom.xml @@ -2,7 +2,7 @@ 4.0.0 org.eclipse.jetty build-resources - 9.4.20-SNAPSHOT + 9.4.20.v20190813 jar Jetty :: Build Resources diff --git a/examples/async-rest/async-rest-jar/pom.xml b/examples/async-rest/async-rest-jar/pom.xml index 862fa2bb9be..ca842778e51 100644 --- a/examples/async-rest/async-rest-jar/pom.xml +++ b/examples/async-rest/async-rest-jar/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty example-async-rest - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/examples/async-rest/async-rest-webapp/pom.xml b/examples/async-rest/async-rest-webapp/pom.xml index d76486ad950..4351f7c1cc1 100644 --- a/examples/async-rest/async-rest-webapp/pom.xml +++ b/examples/async-rest/async-rest-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty example-async-rest - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/examples/async-rest/pom.xml b/examples/async-rest/pom.xml index cbfa46cb7f0..6ee4c94f9de 100644 --- a/examples/async-rest/pom.xml +++ b/examples/async-rest/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/examples/embedded/pom.xml b/examples/embedded/pom.xml index 013cae82fc6..27805d92fae 100644 --- a/examples/embedded/pom.xml +++ b/examples/embedded/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 ../pom.xml 4.0.0 diff --git a/examples/pom.xml b/examples/pom.xml index 2ebd531253d..8be2b003069 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-alpn/jetty-alpn-client/pom.xml b/jetty-alpn/jetty-alpn-client/pom.xml index 936d0d36881..839641c633e 100644 --- a/jetty-alpn/jetty-alpn-client/pom.xml +++ b/jetty-alpn/jetty-alpn-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-alpn-client diff --git a/jetty-alpn/jetty-alpn-conscrypt-client/pom.xml b/jetty-alpn/jetty-alpn-conscrypt-client/pom.xml index 208b9474425..151f2bc1e11 100644 --- a/jetty-alpn/jetty-alpn-conscrypt-client/pom.xml +++ b/jetty-alpn/jetty-alpn-conscrypt-client/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-alpn/jetty-alpn-conscrypt-server/pom.xml b/jetty-alpn/jetty-alpn-conscrypt-server/pom.xml index d0cb5aa82e9..05935270c6d 100644 --- a/jetty-alpn/jetty-alpn-conscrypt-server/pom.xml +++ b/jetty-alpn/jetty-alpn-conscrypt-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-alpn/jetty-alpn-java-client/pom.xml b/jetty-alpn/jetty-alpn-java-client/pom.xml index a18e8e886d8..a654412700f 100644 --- a/jetty-alpn/jetty-alpn-java-client/pom.xml +++ b/jetty-alpn/jetty-alpn-java-client/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-alpn/jetty-alpn-java-server/pom.xml b/jetty-alpn/jetty-alpn-java-server/pom.xml index f8d888e225c..861299d43c7 100644 --- a/jetty-alpn/jetty-alpn-java-server/pom.xml +++ b/jetty-alpn/jetty-alpn-java-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-alpn/jetty-alpn-openjdk8-client/pom.xml b/jetty-alpn/jetty-alpn-openjdk8-client/pom.xml index 23b33072967..3e556d95583 100644 --- a/jetty-alpn/jetty-alpn-openjdk8-client/pom.xml +++ b/jetty-alpn/jetty-alpn-openjdk8-client/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-alpn/jetty-alpn-openjdk8-server/pom.xml b/jetty-alpn/jetty-alpn-openjdk8-server/pom.xml index 2c8785d4cc0..372c6bb669f 100644 --- a/jetty-alpn/jetty-alpn-openjdk8-server/pom.xml +++ b/jetty-alpn/jetty-alpn-openjdk8-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-alpn/jetty-alpn-server/pom.xml b/jetty-alpn/jetty-alpn-server/pom.xml index f975b9ed940..3e6e92cd311 100644 --- a/jetty-alpn/jetty-alpn-server/pom.xml +++ b/jetty-alpn/jetty-alpn-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-alpn-server diff --git a/jetty-alpn/pom.xml b/jetty-alpn/pom.xml index 7ff44158f82..57996f037ba 100644 --- a/jetty-alpn/pom.xml +++ b/jetty-alpn/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-alpn-parent diff --git a/jetty-annotations/pom.xml b/jetty-annotations/pom.xml index 7c02a9443ed..b6fdd9281ca 100644 --- a/jetty-annotations/pom.xml +++ b/jetty-annotations/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-annotations diff --git a/jetty-ant/pom.xml b/jetty-ant/pom.xml index 3ad556a0797..1ffe2e0d950 100644 --- a/jetty-ant/pom.xml +++ b/jetty-ant/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-ant diff --git a/jetty-bom/pom.xml b/jetty-bom/pom.xml index e4ab0d002ad..bfde611edb7 100644 --- a/jetty-bom/pom.xml +++ b/jetty-bom/pom.xml @@ -9,7 +9,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 @@ -53,331 +53,331 @@ org.eclipse.jetty apache-jsp - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty apache-jstl - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-alpn-client - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-alpn-java-client - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-alpn-java-server - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-alpn-openjdk8-client - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-alpn-openjdk8-server - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-alpn-conscrypt-client - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-alpn-conscrypt-server - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-alpn-server - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-annotations - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-ant - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-client - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-continuation - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-deploy - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-distribution - 9.4.20-SNAPSHOT + 9.4.20.v20190813 zip org.eclipse.jetty jetty-distribution - 9.4.20-SNAPSHOT + 9.4.20.v20190813 tar.gz org.eclipse.jetty.fcgi fcgi-client - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.fcgi fcgi-server - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.gcloud jetty-gcloud-session-manager - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-home - 9.4.20-SNAPSHOT + 9.4.20.v20190813 zip org.eclipse.jetty jetty-home - 9.4.20-SNAPSHOT + 9.4.20.v20190813 tar.gz org.eclipse.jetty jetty-http - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.http2 http2-client - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.http2 http2-common - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.http2 http2-hpack - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.http2 http2-http-client-transport - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.http2 http2-server - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-http-spi - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty infinispan-common - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty infinispan-remote-query - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty infinispan-embedded-query - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-hazelcast - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-io - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-jaas - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-jaspi - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-jmx - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-jndi - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.memcached jetty-memcached-sessions - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-nosql - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.osgi jetty-osgi-boot - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.osgi jetty-osgi-boot-jsp - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.osgi jetty-osgi-boot-warurl - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.osgi jetty-httpservice - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-plus - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-proxy - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-quickstart - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-rewrite - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-security - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-server - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-servlet - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-servlets - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-spring - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-unixsocket - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-util - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-util-ajax - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-webapp - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.websocket javax-websocket-client-impl - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.websocket javax-websocket-server-impl - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.websocket websocket-api - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.websocket websocket-client - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.websocket websocket-common - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.websocket websocket-server - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty.websocket websocket-servlet - 9.4.20-SNAPSHOT + 9.4.20.v20190813 org.eclipse.jetty jetty-xml - 9.4.20-SNAPSHOT + 9.4.20.v20190813 diff --git a/jetty-cdi/pom.xml b/jetty-cdi/pom.xml index 243de5e8b75..61d49bf1890 100644 --- a/jetty-cdi/pom.xml +++ b/jetty-cdi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 org.eclipse.jetty diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml index 26a0d86ae78..8f26978cdef 100644 --- a/jetty-client/pom.xml +++ b/jetty-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-continuation/pom.xml b/jetty-continuation/pom.xml index aefdd156a66..16a5e0cd3ac 100644 --- a/jetty-continuation/pom.xml +++ b/jetty-continuation/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-continuation diff --git a/jetty-deploy/pom.xml b/jetty-deploy/pom.xml index 963801ab396..1c88b597a81 100644 --- a/jetty-deploy/pom.xml +++ b/jetty-deploy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-deploy diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml index ca10fe789c7..afa9e475cc3 100644 --- a/jetty-distribution/pom.xml +++ b/jetty-distribution/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-distribution diff --git a/jetty-documentation/pom.xml b/jetty-documentation/pom.xml index 1721b0a4783..926d80d5f42 100644 --- a/jetty-documentation/pom.xml +++ b/jetty-documentation/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 jetty-documentation Jetty :: Documentation diff --git a/jetty-fcgi/fcgi-client/pom.xml b/jetty-fcgi/fcgi-client/pom.xml index 5c302a84dd4..b604adf11b3 100644 --- a/jetty-fcgi/fcgi-client/pom.xml +++ b/jetty-fcgi/fcgi-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.fcgi fcgi-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-fcgi/fcgi-server/pom.xml b/jetty-fcgi/fcgi-server/pom.xml index 971c1419710..af449076381 100644 --- a/jetty-fcgi/fcgi-server/pom.xml +++ b/jetty-fcgi/fcgi-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.fcgi fcgi-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-fcgi/pom.xml b/jetty-fcgi/pom.xml index 38c0c529f06..f1a8b68e5b3 100644 --- a/jetty-fcgi/pom.xml +++ b/jetty-fcgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-gcloud/jetty-gcloud-session-manager/pom.xml b/jetty-gcloud/jetty-gcloud-session-manager/pom.xml index 6de8719bec8..1638b11bca1 100644 --- a/jetty-gcloud/jetty-gcloud-session-manager/pom.xml +++ b/jetty-gcloud/jetty-gcloud-session-manager/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.gcloud gcloud-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-gcloud/pom.xml b/jetty-gcloud/pom.xml index bb4464a2e70..d4d8f019b34 100644 --- a/jetty-gcloud/pom.xml +++ b/jetty-gcloud/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-hazelcast/pom.xml b/jetty-hazelcast/pom.xml index 5e0c8465b82..c44217c93a9 100644 --- a/jetty-hazelcast/pom.xml +++ b/jetty-hazelcast/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-home/pom.xml b/jetty-home/pom.xml index a1052962b2b..b40680fc5a9 100644 --- a/jetty-home/pom.xml +++ b/jetty-home/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-home diff --git a/jetty-http-spi/pom.xml b/jetty-http-spi/pom.xml index a74282f7bc7..a341786f9ac 100644 --- a/jetty-http-spi/pom.xml +++ b/jetty-http-spi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-http-spi diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml index a07e71402a5..7a33f2ba1ac 100644 --- a/jetty-http/pom.xml +++ b/jetty-http/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-http diff --git a/jetty-http2/http2-alpn-tests/pom.xml b/jetty-http2/http2-alpn-tests/pom.xml index de8f7ef30de..0b43ee614d5 100644 --- a/jetty-http2/http2-alpn-tests/pom.xml +++ b/jetty-http2/http2-alpn-tests/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-http2/http2-client/pom.xml b/jetty-http2/http2-client/pom.xml index e077d17123f..1bf858d5610 100644 --- a/jetty-http2/http2-client/pom.xml +++ b/jetty-http2/http2-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-http2/http2-common/pom.xml b/jetty-http2/http2-common/pom.xml index f0442e20d0d..c481a41e05f 100644 --- a/jetty-http2/http2-common/pom.xml +++ b/jetty-http2/http2-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-http2/http2-hpack/pom.xml b/jetty-http2/http2-hpack/pom.xml index aa1ffab2ab4..459e6fd339a 100644 --- a/jetty-http2/http2-hpack/pom.xml +++ b/jetty-http2/http2-hpack/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-http2/http2-http-client-transport/pom.xml b/jetty-http2/http2-http-client-transport/pom.xml index 803d932d013..fa1421f55d4 100644 --- a/jetty-http2/http2-http-client-transport/pom.xml +++ b/jetty-http2/http2-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-http2/http2-server/pom.xml b/jetty-http2/http2-server/pom.xml index 67561233752..b8943f3f070 100644 --- a/jetty-http2/http2-server/pom.xml +++ b/jetty-http2/http2-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-http2/pom.xml b/jetty-http2/pom.xml index dfb460b3d9f..9d94827074c 100644 --- a/jetty-http2/pom.xml +++ b/jetty-http2/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-infinispan/infinispan-common/pom.xml b/jetty-infinispan/infinispan-common/pom.xml index 22fac2fdaca..99a5c9e675b 100644 --- a/jetty-infinispan/infinispan-common/pom.xml +++ b/jetty-infinispan/infinispan-common/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty infinispan-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 infinispan-common diff --git a/jetty-infinispan/infinispan-embedded-query/pom.xml b/jetty-infinispan/infinispan-embedded-query/pom.xml index 088c8c34a1d..3c2d15fa7c2 100644 --- a/jetty-infinispan/infinispan-embedded-query/pom.xml +++ b/jetty-infinispan/infinispan-embedded-query/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty infinispan-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 infinispan-embedded-query diff --git a/jetty-infinispan/infinispan-embedded/pom.xml b/jetty-infinispan/infinispan-embedded/pom.xml index 6c0a79806e5..dd73880e99c 100644 --- a/jetty-infinispan/infinispan-embedded/pom.xml +++ b/jetty-infinispan/infinispan-embedded/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty infinispan-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 infinispan-embedded diff --git a/jetty-infinispan/infinispan-remote-query/pom.xml b/jetty-infinispan/infinispan-remote-query/pom.xml index 845b12372e8..ec2338eec2d 100644 --- a/jetty-infinispan/infinispan-remote-query/pom.xml +++ b/jetty-infinispan/infinispan-remote-query/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty infinispan-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 infinispan-remote-query diff --git a/jetty-infinispan/infinispan-remote/pom.xml b/jetty-infinispan/infinispan-remote/pom.xml index ca9314c94bb..973e5c37583 100644 --- a/jetty-infinispan/infinispan-remote/pom.xml +++ b/jetty-infinispan/infinispan-remote/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty infinispan-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 infinispan-remote diff --git a/jetty-infinispan/pom.xml b/jetty-infinispan/pom.xml index 65aea2dbaa2..9bbe25b3669 100644 --- a/jetty-infinispan/pom.xml +++ b/jetty-infinispan/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-io/pom.xml b/jetty-io/pom.xml index 0e7f7b1ec8c..e432f013ba2 100644 --- a/jetty-io/pom.xml +++ b/jetty-io/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-io diff --git a/jetty-jaas/pom.xml b/jetty-jaas/pom.xml index 8080d3556f3..6f75fb4e76b 100644 --- a/jetty-jaas/pom.xml +++ b/jetty-jaas/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-jaas diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml index 46a3b7c0058..b76e57861a9 100644 --- a/jetty-jaspi/pom.xml +++ b/jetty-jaspi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-jmh/pom.xml b/jetty-jmh/pom.xml index 49f7b23f920..70b035edc9f 100644 --- a/jetty-jmh/pom.xml +++ b/jetty-jmh/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-jmx/pom.xml b/jetty-jmx/pom.xml index 7fe7753e3cd..f6dfe4c39a5 100644 --- a/jetty-jmx/pom.xml +++ b/jetty-jmx/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-jmx diff --git a/jetty-jndi/pom.xml b/jetty-jndi/pom.xml index bd3743c929d..13ab7f3990c 100644 --- a/jetty-jndi/pom.xml +++ b/jetty-jndi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-jndi diff --git a/jetty-jspc-maven-plugin/pom.xml b/jetty-jspc-maven-plugin/pom.xml index 377ecef9947..5dc66f616cf 100644 --- a/jetty-jspc-maven-plugin/pom.xml +++ b/jetty-jspc-maven-plugin/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-jspc-maven-plugin diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml index 62f420b8d5c..050bc776d26 100644 --- a/jetty-maven-plugin/pom.xml +++ b/jetty-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-maven-plugin diff --git a/jetty-memcached/jetty-memcached-sessions/pom.xml b/jetty-memcached/jetty-memcached-sessions/pom.xml index 56c602f3715..eb3dafad53f 100644 --- a/jetty-memcached/jetty-memcached-sessions/pom.xml +++ b/jetty-memcached/jetty-memcached-sessions/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.memcached memcached-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-memcached/pom.xml b/jetty-memcached/pom.xml index 21321b12375..a0cdfadb47f 100644 --- a/jetty-memcached/pom.xml +++ b/jetty-memcached/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-nosql/pom.xml b/jetty-nosql/pom.xml index fd2ec62dbe9..fbf9eb3ceea 100644 --- a/jetty-nosql/pom.xml +++ b/jetty-nosql/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-nosql diff --git a/jetty-osgi/jetty-osgi-alpn/pom.xml b/jetty-osgi/jetty-osgi-alpn/pom.xml index 47d15455016..6230c03375d 100644 --- a/jetty-osgi/jetty-osgi-alpn/pom.xml +++ b/jetty-osgi/jetty-osgi-alpn/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-osgi-alpn diff --git a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml index 86fed5bf101..dc792b38461 100644 --- a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml +++ b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-osgi-boot-jsp diff --git a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml index 11a95fd5a90..e5dc99215af 100644 --- a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml +++ b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 ../pom.xml 4.0.0 diff --git a/jetty-osgi/jetty-osgi-boot/pom.xml b/jetty-osgi/jetty-osgi-boot/pom.xml index 101dcb41a05..9e7c261eadb 100644 --- a/jetty-osgi/jetty-osgi-boot/pom.xml +++ b/jetty-osgi/jetty-osgi-boot/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-osgi-boot diff --git a/jetty-osgi/jetty-osgi-httpservice/pom.xml b/jetty-osgi/jetty-osgi-httpservice/pom.xml index 2d819b6d17d..a84b7bb1526 100644 --- a/jetty-osgi/jetty-osgi-httpservice/pom.xml +++ b/jetty-osgi/jetty-osgi-httpservice/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-httpservice diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml index 9f08cecefca..aed006778df 100644 --- a/jetty-osgi/pom.xml +++ b/jetty-osgi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi-context/pom.xml b/jetty-osgi/test-jetty-osgi-context/pom.xml index 497f2acc72c..ae184d7dfbf 100644 --- a/jetty-osgi/test-jetty-osgi-context/pom.xml +++ b/jetty-osgi/test-jetty-osgi-context/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 test-jetty-osgi-context diff --git a/jetty-osgi/test-jetty-osgi-fragment/pom.xml b/jetty-osgi/test-jetty-osgi-fragment/pom.xml index 91847a625dc..5df40733b68 100644 --- a/jetty-osgi/test-jetty-osgi-fragment/pom.xml +++ b/jetty-osgi/test-jetty-osgi-fragment/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 ../pom.xml 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi-server/pom.xml b/jetty-osgi/test-jetty-osgi-server/pom.xml index 4f7c5f0d293..1d6edca60eb 100644 --- a/jetty-osgi/test-jetty-osgi-server/pom.xml +++ b/jetty-osgi/test-jetty-osgi-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 test-jetty-osgi-server diff --git a/jetty-osgi/test-jetty-osgi-webapp/pom.xml b/jetty-osgi/test-jetty-osgi-webapp/pom.xml index ee4f39c6ad9..76574e36697 100644 --- a/jetty-osgi/test-jetty-osgi-webapp/pom.xml +++ b/jetty-osgi/test-jetty-osgi-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 ../pom.xml 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml index 8befd094b12..83720bc4cdb 100644 --- a/jetty-osgi/test-jetty-osgi/pom.xml +++ b/jetty-osgi/test-jetty-osgi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 ../pom.xml 4.0.0 diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml index 93ade6bfe11..45dc58a9111 100644 --- a/jetty-plus/pom.xml +++ b/jetty-plus/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-plus diff --git a/jetty-proxy/pom.xml b/jetty-proxy/pom.xml index 312a39906b3..a46abfcd3ee 100644 --- a/jetty-proxy/pom.xml +++ b/jetty-proxy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-proxy diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml index fee519a8e72..c6a1a401827 100644 --- a/jetty-quickstart/pom.xml +++ b/jetty-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 org.eclipse.jetty diff --git a/jetty-rewrite/pom.xml b/jetty-rewrite/pom.xml index 962aaa46f33..17c40511f2d 100644 --- a/jetty-rewrite/pom.xml +++ b/jetty-rewrite/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-rewrite diff --git a/jetty-runner/pom.xml b/jetty-runner/pom.xml index 5a29e43ded8..4474afd4b22 100644 --- a/jetty-runner/pom.xml +++ b/jetty-runner/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-runner diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml index 161a1ae4bca..eab64cbb833 100644 --- a/jetty-security/pom.xml +++ b/jetty-security/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-security diff --git a/jetty-server/pom.xml b/jetty-server/pom.xml index ecdbdadaa52..6783cd56477 100644 --- a/jetty-server/pom.xml +++ b/jetty-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-server diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml index 73cabc53ed1..3110b01e2ab 100644 --- a/jetty-servlet/pom.xml +++ b/jetty-servlet/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-servlet diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml index 1e892a2b764..64f4be9f4d9 100644 --- a/jetty-servlets/pom.xml +++ b/jetty-servlets/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-servlets diff --git a/jetty-spring/pom.xml b/jetty-spring/pom.xml index c9de8e6c27b..e501d524b92 100644 --- a/jetty-spring/pom.xml +++ b/jetty-spring/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-spring diff --git a/jetty-start/pom.xml b/jetty-start/pom.xml index c05a3b3eae8..9ac84e8f52f 100644 --- a/jetty-start/pom.xml +++ b/jetty-start/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-start diff --git a/jetty-unixsocket/pom.xml b/jetty-unixsocket/pom.xml index 031cbcc8876..1ca105d052b 100644 --- a/jetty-unixsocket/pom.xml +++ b/jetty-unixsocket/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-unixsocket diff --git a/jetty-util-ajax/pom.xml b/jetty-util-ajax/pom.xml index d058d2331ce..fbbf73f5e39 100644 --- a/jetty-util-ajax/pom.xml +++ b/jetty-util-ajax/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-util-ajax diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml index 5b2898ec150..7448b556c40 100644 --- a/jetty-util/pom.xml +++ b/jetty-util/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-util diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml index 49c025fdc1f..9c2c784e2fd 100644 --- a/jetty-webapp/pom.xml +++ b/jetty-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-webapp diff --git a/jetty-websocket/javax-websocket-client-impl/pom.xml b/jetty-websocket/javax-websocket-client-impl/pom.xml index 7b8da08db7a..4196320f48a 100644 --- a/jetty-websocket/javax-websocket-client-impl/pom.xml +++ b/jetty-websocket/javax-websocket-client-impl/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-websocket/javax-websocket-server-impl/pom.xml b/jetty-websocket/javax-websocket-server-impl/pom.xml index ecd0c3409f6..5a520aa89c8 100644 --- a/jetty-websocket/javax-websocket-server-impl/pom.xml +++ b/jetty-websocket/javax-websocket-server-impl/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-websocket/jetty-websocket-tests/pom.xml b/jetty-websocket/jetty-websocket-tests/pom.xml index 3eaa1bc7482..b07ea1e6e99 100644 --- a/jetty-websocket/jetty-websocket-tests/pom.xml +++ b/jetty-websocket/jetty-websocket-tests/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml index 340e57abec1..3f471b0ca15 100644 --- a/jetty-websocket/pom.xml +++ b/jetty-websocket/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml index bb2b47c9549..625b3caa23c 100644 --- a/jetty-websocket/websocket-api/pom.xml +++ b/jetty-websocket/websocket-api/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml index 0cce19b43fd..00261942717 100644 --- a/jetty-websocket/websocket-client/pom.xml +++ b/jetty-websocket/websocket-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml index 00ea4a67cb5..c447af5f9ee 100644 --- a/jetty-websocket/websocket-common/pom.xml +++ b/jetty-websocket/websocket-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml index acee6b70e3d..804b34e501b 100644 --- a/jetty-websocket/websocket-server/pom.xml +++ b/jetty-websocket/websocket-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml index 2f9d5aebf9f..51b3fcf181e 100644 --- a/jetty-websocket/websocket-servlet/pom.xml +++ b/jetty-websocket/websocket-servlet/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/jetty-xml/pom.xml b/jetty-xml/pom.xml index c1f02996b97..2788d200c74 100644 --- a/jetty-xml/pom.xml +++ b/jetty-xml/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jetty-xml diff --git a/pom.xml b/pom.xml index de121a55c88..21fbd2b9ccc 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 Jetty :: Project The Eclipse Jetty Project pom diff --git a/tests/pom.xml b/tests/pom.xml index 578dd2a83bc..b7ffbb3f10f 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.4.20-SNAPSHOT + 9.4.20.v20190813 ../pom.xml org.eclipse.jetty.tests diff --git a/tests/test-continuation/pom.xml b/tests/test-continuation/pom.xml index e2eec91a8ac..c9ab028975c 100644 --- a/tests/test-continuation/pom.xml +++ b/tests/test-continuation/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 ../pom.xml 4.0.0 diff --git a/tests/test-distribution/pom.xml b/tests/test-distribution/pom.xml index a59812bccd5..e0505f5eeb4 100644 --- a/tests/test-distribution/pom.xml +++ b/tests/test-distribution/pom.xml @@ -2,7 +2,7 @@ tests-parent org.eclipse.jetty.tests - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/tests/test-http-client-transport/pom.xml b/tests/test-http-client-transport/pom.xml index dc3adf6eee2..c762e2c46d0 100644 --- a/tests/test-http-client-transport/pom.xml +++ b/tests/test-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/tests/test-integration/pom.xml b/tests/test-integration/pom.xml index a9bff2662ed..2bebc9bfe30 100644 --- a/tests/test-integration/pom.xml +++ b/tests/test-integration/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 test-integration diff --git a/tests/test-jmx/jmx-webapp-it/pom.xml b/tests/test-jmx/jmx-webapp-it/pom.xml index af761454ca9..1ca8d64fca3 100644 --- a/tests/test-jmx/jmx-webapp-it/pom.xml +++ b/tests/test-jmx/jmx-webapp-it/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 jmx-webapp-it diff --git a/tests/test-jmx/jmx-webapp/pom.xml b/tests/test-jmx/jmx-webapp/pom.xml index a6b615929ac..7c25280dc56 100644 --- a/tests/test-jmx/jmx-webapp/pom.xml +++ b/tests/test-jmx/jmx-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 jmx-webapp war diff --git a/tests/test-jmx/pom.xml b/tests/test-jmx/pom.xml index b6936fc4573..6d2fecd7768 100644 --- a/tests/test-jmx/pom.xml +++ b/tests/test-jmx/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 test-jmx-parent diff --git a/tests/test-loginservice/pom.xml b/tests/test-loginservice/pom.xml index c6319a2d66c..e1e793925c4 100644 --- a/tests/test-loginservice/pom.xml +++ b/tests/test-loginservice/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 test-loginservice Jetty Tests :: Login Service diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml index 4251b44dda3..c630d98cae0 100644 --- a/tests/test-quickstart/pom.xml +++ b/tests/test-quickstart/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 ../pom.xml 4.0.0 diff --git a/tests/test-sessions/pom.xml b/tests/test-sessions/pom.xml index 9c597f000d6..c7ce501e527 100644 --- a/tests/test-sessions/pom.xml +++ b/tests/test-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 test-sessions-parent Jetty Tests :: Sessions :: Parent diff --git a/tests/test-sessions/test-file-sessions/pom.xml b/tests/test-sessions/test-file-sessions/pom.xml index e33f93f1404..196024f3792 100644 --- a/tests/test-sessions/test-file-sessions/pom.xml +++ b/tests/test-sessions/test-file-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 test-file-sessions Jetty Tests :: Sessions :: File diff --git a/tests/test-sessions/test-gcloud-sessions/pom.xml b/tests/test-sessions/test-gcloud-sessions/pom.xml index bdc985247bd..eacd5bebc35 100644 --- a/tests/test-sessions/test-gcloud-sessions/pom.xml +++ b/tests/test-sessions/test-gcloud-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 test-gcloud-sessions Jetty Tests :: Sessions :: GCloud diff --git a/tests/test-sessions/test-hazelcast-sessions/pom.xml b/tests/test-sessions/test-hazelcast-sessions/pom.xml index 7f3a2188be5..cc707764602 100644 --- a/tests/test-sessions/test-hazelcast-sessions/pom.xml +++ b/tests/test-sessions/test-hazelcast-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 test-hazelcast-sessions Jetty Tests :: Sessions :: Hazelcast diff --git a/tests/test-sessions/test-infinispan-sessions/pom.xml b/tests/test-sessions/test-infinispan-sessions/pom.xml index a7f00d14694..cd547b250eb 100644 --- a/tests/test-sessions/test-infinispan-sessions/pom.xml +++ b/tests/test-sessions/test-infinispan-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 test-infinispan-sessions Jetty Tests :: Sessions :: Infinispan diff --git a/tests/test-sessions/test-jdbc-sessions/pom.xml b/tests/test-sessions/test-jdbc-sessions/pom.xml index 93b400a6aa3..9cc4e901584 100644 --- a/tests/test-sessions/test-jdbc-sessions/pom.xml +++ b/tests/test-sessions/test-jdbc-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 test-jdbc-sessions Jetty Tests :: Sessions :: JDBC diff --git a/tests/test-sessions/test-memcached-sessions/pom.xml b/tests/test-sessions/test-memcached-sessions/pom.xml index 0c265864e32..e950d60e22a 100644 --- a/tests/test-sessions/test-memcached-sessions/pom.xml +++ b/tests/test-sessions/test-memcached-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 test-memcached-sessions Jetty Tests :: Sessions :: Memcached diff --git a/tests/test-sessions/test-mongodb-sessions/pom.xml b/tests/test-sessions/test-mongodb-sessions/pom.xml index 44c0406c297..f3ffe156e36 100644 --- a/tests/test-sessions/test-mongodb-sessions/pom.xml +++ b/tests/test-sessions/test-mongodb-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 test-mongodb-sessions Jetty Tests :: Sessions :: Mongo diff --git a/tests/test-sessions/test-sessions-common/pom.xml b/tests/test-sessions/test-sessions-common/pom.xml index 7489874492b..14e59bb5d59 100644 --- a/tests/test-sessions/test-sessions-common/pom.xml +++ b/tests/test-sessions/test-sessions-common/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 test-sessions-common Jetty Tests :: Sessions :: Common diff --git a/tests/test-webapps/pom.xml b/tests/test-webapps/pom.xml index 64ed61d165c..ac9a8510d52 100644 --- a/tests/test-webapps/pom.xml +++ b/tests/test-webapps/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 ../pom.xml test-webapps-parent diff --git a/tests/test-webapps/test-cdi-common-webapp/pom.xml b/tests/test-webapps/test-cdi-common-webapp/pom.xml index 227d6da57e1..9528a16537e 100644 --- a/tests/test-webapps/test-cdi-common-webapp/pom.xml +++ b/tests/test-webapps/test-cdi-common-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/tests/test-webapps/test-felix-webapp/pom.xml b/tests/test-webapps/test-felix-webapp/pom.xml index 1451c1e1312..323d5c78434 100644 --- a/tests/test-webapps/test-felix-webapp/pom.xml +++ b/tests/test-webapps/test-felix-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/tests/test-webapps/test-http2-webapp/pom.xml b/tests/test-webapps/test-http2-webapp/pom.xml index d837fade4e1..806d7d8bc01 100644 --- a/tests/test-webapps/test-http2-webapp/pom.xml +++ b/tests/test-webapps/test-http2-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/tests/test-webapps/test-jaas-webapp/pom.xml b/tests/test-webapps/test-jaas-webapp/pom.xml index 264e6239251..47b33028cc9 100644 --- a/tests/test-webapps/test-jaas-webapp/pom.xml +++ b/tests/test-webapps/test-jaas-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 test-jaas-webapp Jetty Tests :: WebApp :: JAAS diff --git a/tests/test-webapps/test-jetty-webapp/pom.xml b/tests/test-webapps/test-jetty-webapp/pom.xml index 9129d42b50c..90396f05402 100644 --- a/tests/test-webapps/test-jetty-webapp/pom.xml +++ b/tests/test-webapps/test-jetty-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 ../pom.xml 4.0.0 diff --git a/tests/test-webapps/test-jndi-webapp/pom.xml b/tests/test-webapps/test-jndi-webapp/pom.xml index f9d186d38c9..246b6befa88 100644 --- a/tests/test-webapps/test-jndi-webapp/pom.xml +++ b/tests/test-webapps/test-jndi-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 test-jndi-webapp Jetty Tests :: WebApp :: JNDI diff --git a/tests/test-webapps/test-mock-resources/pom.xml b/tests/test-webapps/test-mock-resources/pom.xml index c5d22e7072b..04cff5cb542 100644 --- a/tests/test-webapps/test-mock-resources/pom.xml +++ b/tests/test-webapps/test-mock-resources/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 Jetty Tests :: WebApp :: Mock Resources test-mock-resources diff --git a/tests/test-webapps/test-owb-cdi-webapp/pom.xml b/tests/test-webapps/test-owb-cdi-webapp/pom.xml index d20b4db280c..476fb18aab8 100644 --- a/tests/test-webapps/test-owb-cdi-webapp/pom.xml +++ b/tests/test-webapps/test-owb-cdi-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 diff --git a/tests/test-webapps/test-proxy-webapp/pom.xml b/tests/test-webapps/test-proxy-webapp/pom.xml index 13452040403..e8b06fb1cf8 100644 --- a/tests/test-webapps/test-proxy-webapp/pom.xml +++ b/tests/test-webapps/test-proxy-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 ../pom.xml 4.0.0 diff --git a/tests/test-webapps/test-servlet-spec/pom.xml b/tests/test-webapps/test-servlet-spec/pom.xml index 4122a867bf7..27227c8e928 100644 --- a/tests/test-webapps/test-servlet-spec/pom.xml +++ b/tests/test-webapps/test-servlet-spec/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 test-servlet-spec-parent Jetty Tests :: Spec Test WebApp :: Parent diff --git a/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml b/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml index 1afee90fee7..460fef2975c 100644 --- a/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 test-container-initializer jar diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml index 69086a1eb8d..2567862c57b 100644 --- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 Jetty Tests :: Webapps :: Spec Webapp test-spec-webapp diff --git a/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml b/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml index 69e20df580a..eb05803cdfe 100644 --- a/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 Jetty Tests :: WebApp :: Servlet Spec :: Fragment Jar diff --git a/tests/test-webapps/test-simple-webapp/pom.xml b/tests/test-webapps/test-simple-webapp/pom.xml index 1fdf83b9247..b7940ee84f0 100644 --- a/tests/test-webapps/test-simple-webapp/pom.xml +++ b/tests/test-webapps/test-simple-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 test-simple-webapp diff --git a/tests/test-webapps/test-webapp-rfc2616/pom.xml b/tests/test-webapps/test-webapp-rfc2616/pom.xml index 529be61753f..b84ba5a1c3a 100644 --- a/tests/test-webapps/test-webapp-rfc2616/pom.xml +++ b/tests/test-webapps/test-webapp-rfc2616/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 test-webapp-rfc2616 Jetty Tests :: WebApp :: RFC2616 diff --git a/tests/test-webapps/test-weld-cdi-webapp/pom.xml b/tests/test-webapps/test-weld-cdi-webapp/pom.xml index e6098fac1d5..e9cd59c9b90 100644 --- a/tests/test-webapps/test-weld-cdi-webapp/pom.xml +++ b/tests/test-webapps/test-weld-cdi-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20-SNAPSHOT + 9.4.20.v20190813 4.0.0 From f1efc999182bd7ef639f2e93c84db921cacb987e Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Tue, 13 Aug 2019 17:34:20 -0500 Subject: [PATCH 2/7] Updating to version 9.4.21-SNAPSHOT --- VERSION.txt | 2 + aggregates/jetty-all-compact3/pom.xml | 2 +- aggregates/jetty-all/pom.xml | 2 +- apache-jsp/pom.xml | 2 +- apache-jstl/pom.xml | 2 +- build-resources/pom.xml | 2 +- examples/async-rest/async-rest-jar/pom.xml | 2 +- examples/async-rest/async-rest-webapp/pom.xml | 2 +- examples/async-rest/pom.xml | 2 +- examples/embedded/pom.xml | 2 +- examples/pom.xml | 2 +- jetty-alpn/jetty-alpn-client/pom.xml | 2 +- .../jetty-alpn-conscrypt-client/pom.xml | 2 +- .../jetty-alpn-conscrypt-server/pom.xml | 2 +- jetty-alpn/jetty-alpn-java-client/pom.xml | 2 +- jetty-alpn/jetty-alpn-java-server/pom.xml | 2 +- jetty-alpn/jetty-alpn-openjdk8-client/pom.xml | 2 +- jetty-alpn/jetty-alpn-openjdk8-server/pom.xml | 2 +- jetty-alpn/jetty-alpn-server/pom.xml | 2 +- jetty-alpn/pom.xml | 2 +- jetty-annotations/pom.xml | 2 +- jetty-ant/pom.xml | 2 +- jetty-bom/pom.xml | 132 +++++++++--------- jetty-cdi/pom.xml | 2 +- jetty-client/pom.xml | 2 +- jetty-continuation/pom.xml | 2 +- jetty-deploy/pom.xml | 2 +- jetty-distribution/pom.xml | 2 +- jetty-documentation/pom.xml | 2 +- jetty-fcgi/fcgi-client/pom.xml | 2 +- jetty-fcgi/fcgi-server/pom.xml | 2 +- jetty-fcgi/pom.xml | 2 +- .../jetty-gcloud-session-manager/pom.xml | 2 +- jetty-gcloud/pom.xml | 2 +- jetty-hazelcast/pom.xml | 2 +- jetty-home/pom.xml | 2 +- jetty-http-spi/pom.xml | 2 +- jetty-http/pom.xml | 2 +- jetty-http2/http2-alpn-tests/pom.xml | 2 +- jetty-http2/http2-client/pom.xml | 2 +- jetty-http2/http2-common/pom.xml | 2 +- jetty-http2/http2-hpack/pom.xml | 2 +- .../http2-http-client-transport/pom.xml | 2 +- jetty-http2/http2-server/pom.xml | 2 +- jetty-http2/pom.xml | 2 +- jetty-infinispan/infinispan-common/pom.xml | 2 +- .../infinispan-embedded-query/pom.xml | 2 +- jetty-infinispan/infinispan-embedded/pom.xml | 2 +- .../infinispan-remote-query/pom.xml | 2 +- jetty-infinispan/infinispan-remote/pom.xml | 2 +- jetty-infinispan/pom.xml | 2 +- jetty-io/pom.xml | 2 +- jetty-jaas/pom.xml | 2 +- jetty-jaspi/pom.xml | 2 +- jetty-jmh/pom.xml | 2 +- jetty-jmx/pom.xml | 2 +- jetty-jndi/pom.xml | 2 +- jetty-jspc-maven-plugin/pom.xml | 2 +- jetty-maven-plugin/pom.xml | 2 +- .../jetty-memcached-sessions/pom.xml | 2 +- jetty-memcached/pom.xml | 2 +- jetty-nosql/pom.xml | 2 +- jetty-osgi/jetty-osgi-alpn/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot-jsp/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot-warurl/pom.xml | 2 +- jetty-osgi/jetty-osgi-boot/pom.xml | 2 +- jetty-osgi/jetty-osgi-httpservice/pom.xml | 2 +- jetty-osgi/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-context/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-fragment/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-server/pom.xml | 2 +- jetty-osgi/test-jetty-osgi-webapp/pom.xml | 2 +- jetty-osgi/test-jetty-osgi/pom.xml | 2 +- jetty-plus/pom.xml | 2 +- jetty-proxy/pom.xml | 2 +- jetty-quickstart/pom.xml | 2 +- jetty-rewrite/pom.xml | 2 +- jetty-runner/pom.xml | 2 +- jetty-security/pom.xml | 2 +- jetty-server/pom.xml | 2 +- jetty-servlet/pom.xml | 2 +- jetty-servlets/pom.xml | 2 +- jetty-spring/pom.xml | 2 +- jetty-start/pom.xml | 2 +- jetty-unixsocket/pom.xml | 2 +- jetty-util-ajax/pom.xml | 2 +- jetty-util/pom.xml | 2 +- jetty-webapp/pom.xml | 2 +- .../javax-websocket-client-impl/pom.xml | 2 +- .../javax-websocket-server-impl/pom.xml | 2 +- jetty-websocket/jetty-websocket-tests/pom.xml | 2 +- jetty-websocket/pom.xml | 2 +- jetty-websocket/websocket-api/pom.xml | 2 +- jetty-websocket/websocket-client/pom.xml | 2 +- jetty-websocket/websocket-common/pom.xml | 2 +- jetty-websocket/websocket-server/pom.xml | 2 +- jetty-websocket/websocket-servlet/pom.xml | 2 +- jetty-xml/pom.xml | 2 +- pom.xml | 2 +- tests/pom.xml | 2 +- tests/test-continuation/pom.xml | 2 +- tests/test-distribution/pom.xml | 2 +- tests/test-http-client-transport/pom.xml | 2 +- tests/test-integration/pom.xml | 2 +- tests/test-jmx/jmx-webapp-it/pom.xml | 2 +- tests/test-jmx/jmx-webapp/pom.xml | 2 +- tests/test-jmx/pom.xml | 2 +- tests/test-loginservice/pom.xml | 2 +- tests/test-quickstart/pom.xml | 2 +- tests/test-sessions/pom.xml | 2 +- .../test-sessions/test-file-sessions/pom.xml | 2 +- .../test-gcloud-sessions/pom.xml | 2 +- .../test-hazelcast-sessions/pom.xml | 2 +- .../test-infinispan-sessions/pom.xml | 2 +- .../test-sessions/test-jdbc-sessions/pom.xml | 2 +- .../test-memcached-sessions/pom.xml | 2 +- .../test-mongodb-sessions/pom.xml | 2 +- .../test-sessions-common/pom.xml | 2 +- tests/test-webapps/pom.xml | 2 +- .../test-cdi-common-webapp/pom.xml | 2 +- tests/test-webapps/test-felix-webapp/pom.xml | 2 +- tests/test-webapps/test-http2-webapp/pom.xml | 2 +- tests/test-webapps/test-jaas-webapp/pom.xml | 2 +- tests/test-webapps/test-jetty-webapp/pom.xml | 2 +- tests/test-webapps/test-jndi-webapp/pom.xml | 2 +- .../test-webapps/test-mock-resources/pom.xml | 2 +- .../test-webapps/test-owb-cdi-webapp/pom.xml | 2 +- tests/test-webapps/test-proxy-webapp/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/pom.xml | 2 +- .../test-container-initializer/pom.xml | 2 +- .../test-spec-webapp/pom.xml | 2 +- .../test-web-fragment/pom.xml | 2 +- tests/test-webapps/test-simple-webapp/pom.xml | 2 +- .../test-webapps/test-webapp-rfc2616/pom.xml | 2 +- .../test-webapps/test-weld-cdi-webapp/pom.xml | 2 +- 135 files changed, 201 insertions(+), 199 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index ef82b01e0ba..26288cd7b37 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,3 +1,5 @@ +jetty-9.4.21-SNAPSHOT + jetty-9.4.20.v20190813 - 13 August 2019 + 300 Implement Deflater / Inflater Object Pool + 2061 WebSocket hangs in blockingWrite diff --git a/aggregates/jetty-all-compact3/pom.xml b/aggregates/jetty-all-compact3/pom.xml index 397b0d3a737..b8c6ec526f7 100644 --- a/aggregates/jetty-all-compact3/pom.xml +++ b/aggregates/jetty-all-compact3/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/aggregates/jetty-all/pom.xml b/aggregates/jetty-all/pom.xml index 1143eda8b07..8d622676c96 100644 --- a/aggregates/jetty-all/pom.xml +++ b/aggregates/jetty-all/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/apache-jsp/pom.xml b/apache-jsp/pom.xml index 6bb34fd8f85..af93f9ebff8 100644 --- a/apache-jsp/pom.xml +++ b/apache-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 apache-jsp diff --git a/apache-jstl/pom.xml b/apache-jstl/pom.xml index a2a56a4fd18..6f16b399b9f 100644 --- a/apache-jstl/pom.xml +++ b/apache-jstl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 apache-jstl diff --git a/build-resources/pom.xml b/build-resources/pom.xml index 46fa73518f5..184f002a74b 100644 --- a/build-resources/pom.xml +++ b/build-resources/pom.xml @@ -2,7 +2,7 @@ 4.0.0 org.eclipse.jetty build-resources - 9.4.20.v20190813 + 9.4.21-SNAPSHOT jar Jetty :: Build Resources diff --git a/examples/async-rest/async-rest-jar/pom.xml b/examples/async-rest/async-rest-jar/pom.xml index ca842778e51..61c665a1ece 100644 --- a/examples/async-rest/async-rest-jar/pom.xml +++ b/examples/async-rest/async-rest-jar/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty example-async-rest - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/examples/async-rest/async-rest-webapp/pom.xml b/examples/async-rest/async-rest-webapp/pom.xml index 4351f7c1cc1..aead283d7db 100644 --- a/examples/async-rest/async-rest-webapp/pom.xml +++ b/examples/async-rest/async-rest-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty example-async-rest - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/examples/async-rest/pom.xml b/examples/async-rest/pom.xml index 6ee4c94f9de..14a3f891af1 100644 --- a/examples/async-rest/pom.xml +++ b/examples/async-rest/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/examples/embedded/pom.xml b/examples/embedded/pom.xml index 27805d92fae..fe409025f30 100644 --- a/examples/embedded/pom.xml +++ b/examples/embedded/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT ../pom.xml 4.0.0 diff --git a/examples/pom.xml b/examples/pom.xml index 8be2b003069..76613249caa 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-alpn/jetty-alpn-client/pom.xml b/jetty-alpn/jetty-alpn-client/pom.xml index 839641c633e..9660ac651e3 100644 --- a/jetty-alpn/jetty-alpn-client/pom.xml +++ b/jetty-alpn/jetty-alpn-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-alpn-client diff --git a/jetty-alpn/jetty-alpn-conscrypt-client/pom.xml b/jetty-alpn/jetty-alpn-conscrypt-client/pom.xml index 151f2bc1e11..ea08886ffcd 100644 --- a/jetty-alpn/jetty-alpn-conscrypt-client/pom.xml +++ b/jetty-alpn/jetty-alpn-conscrypt-client/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-alpn/jetty-alpn-conscrypt-server/pom.xml b/jetty-alpn/jetty-alpn-conscrypt-server/pom.xml index 05935270c6d..468be1e4079 100644 --- a/jetty-alpn/jetty-alpn-conscrypt-server/pom.xml +++ b/jetty-alpn/jetty-alpn-conscrypt-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-alpn/jetty-alpn-java-client/pom.xml b/jetty-alpn/jetty-alpn-java-client/pom.xml index a654412700f..2a47e9ae2b1 100644 --- a/jetty-alpn/jetty-alpn-java-client/pom.xml +++ b/jetty-alpn/jetty-alpn-java-client/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-alpn/jetty-alpn-java-server/pom.xml b/jetty-alpn/jetty-alpn-java-server/pom.xml index 861299d43c7..8cef4b2325a 100644 --- a/jetty-alpn/jetty-alpn-java-server/pom.xml +++ b/jetty-alpn/jetty-alpn-java-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-alpn/jetty-alpn-openjdk8-client/pom.xml b/jetty-alpn/jetty-alpn-openjdk8-client/pom.xml index 3e556d95583..4bbdb4e0b2f 100644 --- a/jetty-alpn/jetty-alpn-openjdk8-client/pom.xml +++ b/jetty-alpn/jetty-alpn-openjdk8-client/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-alpn/jetty-alpn-openjdk8-server/pom.xml b/jetty-alpn/jetty-alpn-openjdk8-server/pom.xml index 372c6bb669f..f096d85e465 100644 --- a/jetty-alpn/jetty-alpn-openjdk8-server/pom.xml +++ b/jetty-alpn/jetty-alpn-openjdk8-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-alpn/jetty-alpn-server/pom.xml b/jetty-alpn/jetty-alpn-server/pom.xml index 3e6e92cd311..fd5c1983bfa 100644 --- a/jetty-alpn/jetty-alpn-server/pom.xml +++ b/jetty-alpn/jetty-alpn-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-alpn-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-alpn-server diff --git a/jetty-alpn/pom.xml b/jetty-alpn/pom.xml index 57996f037ba..b20c9e58dc4 100644 --- a/jetty-alpn/pom.xml +++ b/jetty-alpn/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-alpn-parent diff --git a/jetty-annotations/pom.xml b/jetty-annotations/pom.xml index b6fdd9281ca..81627b04732 100644 --- a/jetty-annotations/pom.xml +++ b/jetty-annotations/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-annotations diff --git a/jetty-ant/pom.xml b/jetty-ant/pom.xml index 1ffe2e0d950..6e00ab6f1f1 100644 --- a/jetty-ant/pom.xml +++ b/jetty-ant/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-ant diff --git a/jetty-bom/pom.xml b/jetty-bom/pom.xml index bfde611edb7..9c3b6c8b20e 100644 --- a/jetty-bom/pom.xml +++ b/jetty-bom/pom.xml @@ -9,7 +9,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT @@ -53,331 +53,331 @@ org.eclipse.jetty apache-jsp - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty apache-jstl - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-alpn-client - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-alpn-java-client - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-alpn-java-server - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-alpn-openjdk8-client - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-alpn-openjdk8-server - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-alpn-conscrypt-client - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-alpn-conscrypt-server - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-alpn-server - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-annotations - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-ant - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-client - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-continuation - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-deploy - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-distribution - 9.4.20.v20190813 + 9.4.21-SNAPSHOT zip org.eclipse.jetty jetty-distribution - 9.4.20.v20190813 + 9.4.21-SNAPSHOT tar.gz org.eclipse.jetty.fcgi fcgi-client - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.fcgi fcgi-server - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.gcloud jetty-gcloud-session-manager - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-home - 9.4.20.v20190813 + 9.4.21-SNAPSHOT zip org.eclipse.jetty jetty-home - 9.4.20.v20190813 + 9.4.21-SNAPSHOT tar.gz org.eclipse.jetty jetty-http - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.http2 http2-client - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.http2 http2-common - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.http2 http2-hpack - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.http2 http2-http-client-transport - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.http2 http2-server - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-http-spi - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty infinispan-common - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty infinispan-remote-query - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty infinispan-embedded-query - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-hazelcast - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-io - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-jaas - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-jaspi - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-jmx - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-jndi - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.memcached jetty-memcached-sessions - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-nosql - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.osgi jetty-osgi-boot - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.osgi jetty-osgi-boot-jsp - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.osgi jetty-osgi-boot-warurl - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.osgi jetty-httpservice - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-plus - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-proxy - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-quickstart - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-rewrite - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-security - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-server - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-servlet - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-servlets - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-spring - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-unixsocket - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-util - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-util-ajax - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-webapp - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.websocket javax-websocket-client-impl - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.websocket javax-websocket-server-impl - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.websocket websocket-api - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.websocket websocket-client - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.websocket websocket-common - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.websocket websocket-server - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty.websocket websocket-servlet - 9.4.20.v20190813 + 9.4.21-SNAPSHOT org.eclipse.jetty jetty-xml - 9.4.20.v20190813 + 9.4.21-SNAPSHOT diff --git a/jetty-cdi/pom.xml b/jetty-cdi/pom.xml index 61d49bf1890..6290a1486cb 100644 --- a/jetty-cdi/pom.xml +++ b/jetty-cdi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 org.eclipse.jetty diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml index 8f26978cdef..b17719f1640 100644 --- a/jetty-client/pom.xml +++ b/jetty-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-continuation/pom.xml b/jetty-continuation/pom.xml index 16a5e0cd3ac..cae5f587d6c 100644 --- a/jetty-continuation/pom.xml +++ b/jetty-continuation/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-continuation diff --git a/jetty-deploy/pom.xml b/jetty-deploy/pom.xml index 1c88b597a81..6e98cb18fe1 100644 --- a/jetty-deploy/pom.xml +++ b/jetty-deploy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-deploy diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml index afa9e475cc3..cf3f7c40b2e 100644 --- a/jetty-distribution/pom.xml +++ b/jetty-distribution/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-distribution diff --git a/jetty-documentation/pom.xml b/jetty-documentation/pom.xml index 926d80d5f42..8568850be1a 100644 --- a/jetty-documentation/pom.xml +++ b/jetty-documentation/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT jetty-documentation Jetty :: Documentation diff --git a/jetty-fcgi/fcgi-client/pom.xml b/jetty-fcgi/fcgi-client/pom.xml index b604adf11b3..4ca0188a503 100644 --- a/jetty-fcgi/fcgi-client/pom.xml +++ b/jetty-fcgi/fcgi-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.fcgi fcgi-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-fcgi/fcgi-server/pom.xml b/jetty-fcgi/fcgi-server/pom.xml index af449076381..04d667347fa 100644 --- a/jetty-fcgi/fcgi-server/pom.xml +++ b/jetty-fcgi/fcgi-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.fcgi fcgi-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-fcgi/pom.xml b/jetty-fcgi/pom.xml index f1a8b68e5b3..2c42735269e 100644 --- a/jetty-fcgi/pom.xml +++ b/jetty-fcgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-gcloud/jetty-gcloud-session-manager/pom.xml b/jetty-gcloud/jetty-gcloud-session-manager/pom.xml index 1638b11bca1..6ba7297d839 100644 --- a/jetty-gcloud/jetty-gcloud-session-manager/pom.xml +++ b/jetty-gcloud/jetty-gcloud-session-manager/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.gcloud gcloud-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-gcloud/pom.xml b/jetty-gcloud/pom.xml index d4d8f019b34..4ca2ca54e49 100644 --- a/jetty-gcloud/pom.xml +++ b/jetty-gcloud/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-hazelcast/pom.xml b/jetty-hazelcast/pom.xml index c44217c93a9..61e36991ab2 100644 --- a/jetty-hazelcast/pom.xml +++ b/jetty-hazelcast/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-home/pom.xml b/jetty-home/pom.xml index b40680fc5a9..02201232284 100644 --- a/jetty-home/pom.xml +++ b/jetty-home/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-home diff --git a/jetty-http-spi/pom.xml b/jetty-http-spi/pom.xml index a341786f9ac..7841dac41af 100644 --- a/jetty-http-spi/pom.xml +++ b/jetty-http-spi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-http-spi diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml index 7a33f2ba1ac..d482f9184a9 100644 --- a/jetty-http/pom.xml +++ b/jetty-http/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-http diff --git a/jetty-http2/http2-alpn-tests/pom.xml b/jetty-http2/http2-alpn-tests/pom.xml index 0b43ee614d5..f0f25deeb9e 100644 --- a/jetty-http2/http2-alpn-tests/pom.xml +++ b/jetty-http2/http2-alpn-tests/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-http2/http2-client/pom.xml b/jetty-http2/http2-client/pom.xml index 1bf858d5610..67c035c495e 100644 --- a/jetty-http2/http2-client/pom.xml +++ b/jetty-http2/http2-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-http2/http2-common/pom.xml b/jetty-http2/http2-common/pom.xml index c481a41e05f..cf959c3a5d8 100644 --- a/jetty-http2/http2-common/pom.xml +++ b/jetty-http2/http2-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-http2/http2-hpack/pom.xml b/jetty-http2/http2-hpack/pom.xml index 459e6fd339a..b0fbcb380cb 100644 --- a/jetty-http2/http2-hpack/pom.xml +++ b/jetty-http2/http2-hpack/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-http2/http2-http-client-transport/pom.xml b/jetty-http2/http2-http-client-transport/pom.xml index fa1421f55d4..dffc99a9c8c 100644 --- a/jetty-http2/http2-http-client-transport/pom.xml +++ b/jetty-http2/http2-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-http2/http2-server/pom.xml b/jetty-http2/http2-server/pom.xml index b8943f3f070..63b726088a1 100644 --- a/jetty-http2/http2-server/pom.xml +++ b/jetty-http2/http2-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.http2 http2-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-http2/pom.xml b/jetty-http2/pom.xml index 9d94827074c..c28be91ec37 100644 --- a/jetty-http2/pom.xml +++ b/jetty-http2/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-infinispan/infinispan-common/pom.xml b/jetty-infinispan/infinispan-common/pom.xml index 99a5c9e675b..408015ecaa2 100644 --- a/jetty-infinispan/infinispan-common/pom.xml +++ b/jetty-infinispan/infinispan-common/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty infinispan-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 infinispan-common diff --git a/jetty-infinispan/infinispan-embedded-query/pom.xml b/jetty-infinispan/infinispan-embedded-query/pom.xml index 3c2d15fa7c2..61e81cef992 100644 --- a/jetty-infinispan/infinispan-embedded-query/pom.xml +++ b/jetty-infinispan/infinispan-embedded-query/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty infinispan-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 infinispan-embedded-query diff --git a/jetty-infinispan/infinispan-embedded/pom.xml b/jetty-infinispan/infinispan-embedded/pom.xml index dd73880e99c..26c6a2ad58b 100644 --- a/jetty-infinispan/infinispan-embedded/pom.xml +++ b/jetty-infinispan/infinispan-embedded/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty infinispan-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 infinispan-embedded diff --git a/jetty-infinispan/infinispan-remote-query/pom.xml b/jetty-infinispan/infinispan-remote-query/pom.xml index ec2338eec2d..f36cc86d8b0 100644 --- a/jetty-infinispan/infinispan-remote-query/pom.xml +++ b/jetty-infinispan/infinispan-remote-query/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty infinispan-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 infinispan-remote-query diff --git a/jetty-infinispan/infinispan-remote/pom.xml b/jetty-infinispan/infinispan-remote/pom.xml index 973e5c37583..482dd92b4c9 100644 --- a/jetty-infinispan/infinispan-remote/pom.xml +++ b/jetty-infinispan/infinispan-remote/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty infinispan-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 infinispan-remote diff --git a/jetty-infinispan/pom.xml b/jetty-infinispan/pom.xml index 9bbe25b3669..b680358f0fb 100644 --- a/jetty-infinispan/pom.xml +++ b/jetty-infinispan/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-io/pom.xml b/jetty-io/pom.xml index e432f013ba2..f6d80bc1c3d 100644 --- a/jetty-io/pom.xml +++ b/jetty-io/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-io diff --git a/jetty-jaas/pom.xml b/jetty-jaas/pom.xml index 6f75fb4e76b..c538ee1d4ae 100644 --- a/jetty-jaas/pom.xml +++ b/jetty-jaas/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-jaas diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml index b76e57861a9..f1a22cec0b4 100644 --- a/jetty-jaspi/pom.xml +++ b/jetty-jaspi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-jmh/pom.xml b/jetty-jmh/pom.xml index 70b035edc9f..a5e23aa7596 100644 --- a/jetty-jmh/pom.xml +++ b/jetty-jmh/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-jmx/pom.xml b/jetty-jmx/pom.xml index f6dfe4c39a5..bd7f24d4758 100644 --- a/jetty-jmx/pom.xml +++ b/jetty-jmx/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-jmx diff --git a/jetty-jndi/pom.xml b/jetty-jndi/pom.xml index 13ab7f3990c..a8f2112e6c0 100644 --- a/jetty-jndi/pom.xml +++ b/jetty-jndi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-jndi diff --git a/jetty-jspc-maven-plugin/pom.xml b/jetty-jspc-maven-plugin/pom.xml index 5dc66f616cf..746af56521f 100644 --- a/jetty-jspc-maven-plugin/pom.xml +++ b/jetty-jspc-maven-plugin/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-jspc-maven-plugin diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml index 050bc776d26..ecb746a6233 100644 --- a/jetty-maven-plugin/pom.xml +++ b/jetty-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-maven-plugin diff --git a/jetty-memcached/jetty-memcached-sessions/pom.xml b/jetty-memcached/jetty-memcached-sessions/pom.xml index eb3dafad53f..d8b532e5e79 100644 --- a/jetty-memcached/jetty-memcached-sessions/pom.xml +++ b/jetty-memcached/jetty-memcached-sessions/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.memcached memcached-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-memcached/pom.xml b/jetty-memcached/pom.xml index a0cdfadb47f..0359e6c0c71 100644 --- a/jetty-memcached/pom.xml +++ b/jetty-memcached/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-nosql/pom.xml b/jetty-nosql/pom.xml index fbf9eb3ceea..b92f55c5288 100644 --- a/jetty-nosql/pom.xml +++ b/jetty-nosql/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-nosql diff --git a/jetty-osgi/jetty-osgi-alpn/pom.xml b/jetty-osgi/jetty-osgi-alpn/pom.xml index 6230c03375d..f9e2dd3028b 100644 --- a/jetty-osgi/jetty-osgi-alpn/pom.xml +++ b/jetty-osgi/jetty-osgi-alpn/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-osgi-alpn diff --git a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml index dc792b38461..91c7aa55980 100644 --- a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml +++ b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-osgi-boot-jsp diff --git a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml index e5dc99215af..c62f5c54bf4 100644 --- a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml +++ b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT ../pom.xml 4.0.0 diff --git a/jetty-osgi/jetty-osgi-boot/pom.xml b/jetty-osgi/jetty-osgi-boot/pom.xml index 9e7c261eadb..c436089a844 100644 --- a/jetty-osgi/jetty-osgi-boot/pom.xml +++ b/jetty-osgi/jetty-osgi-boot/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-osgi-boot diff --git a/jetty-osgi/jetty-osgi-httpservice/pom.xml b/jetty-osgi/jetty-osgi-httpservice/pom.xml index a84b7bb1526..eb289b09feb 100644 --- a/jetty-osgi/jetty-osgi-httpservice/pom.xml +++ b/jetty-osgi/jetty-osgi-httpservice/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-httpservice diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml index aed006778df..02d730c721e 100644 --- a/jetty-osgi/pom.xml +++ b/jetty-osgi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi-context/pom.xml b/jetty-osgi/test-jetty-osgi-context/pom.xml index ae184d7dfbf..96d11a85eee 100644 --- a/jetty-osgi/test-jetty-osgi-context/pom.xml +++ b/jetty-osgi/test-jetty-osgi-context/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 test-jetty-osgi-context diff --git a/jetty-osgi/test-jetty-osgi-fragment/pom.xml b/jetty-osgi/test-jetty-osgi-fragment/pom.xml index 5df40733b68..6880f5faa34 100644 --- a/jetty-osgi/test-jetty-osgi-fragment/pom.xml +++ b/jetty-osgi/test-jetty-osgi-fragment/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT ../pom.xml 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi-server/pom.xml b/jetty-osgi/test-jetty-osgi-server/pom.xml index 1d6edca60eb..685eb4a16f3 100644 --- a/jetty-osgi/test-jetty-osgi-server/pom.xml +++ b/jetty-osgi/test-jetty-osgi-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 test-jetty-osgi-server diff --git a/jetty-osgi/test-jetty-osgi-webapp/pom.xml b/jetty-osgi/test-jetty-osgi-webapp/pom.xml index 76574e36697..55af869ba1b 100644 --- a/jetty-osgi/test-jetty-osgi-webapp/pom.xml +++ b/jetty-osgi/test-jetty-osgi-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT ../pom.xml 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml index 83720bc4cdb..db75fe6195c 100644 --- a/jetty-osgi/test-jetty-osgi/pom.xml +++ b/jetty-osgi/test-jetty-osgi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.osgi jetty-osgi-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT ../pom.xml 4.0.0 diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml index 45dc58a9111..54f7d101580 100644 --- a/jetty-plus/pom.xml +++ b/jetty-plus/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-plus diff --git a/jetty-proxy/pom.xml b/jetty-proxy/pom.xml index a46abfcd3ee..14d780c5032 100644 --- a/jetty-proxy/pom.xml +++ b/jetty-proxy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-proxy diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml index c6a1a401827..549c9e879ed 100644 --- a/jetty-quickstart/pom.xml +++ b/jetty-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 org.eclipse.jetty diff --git a/jetty-rewrite/pom.xml b/jetty-rewrite/pom.xml index 17c40511f2d..3ff5ffdf990 100644 --- a/jetty-rewrite/pom.xml +++ b/jetty-rewrite/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-rewrite diff --git a/jetty-runner/pom.xml b/jetty-runner/pom.xml index 4474afd4b22..a2fa09b713f 100644 --- a/jetty-runner/pom.xml +++ b/jetty-runner/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-runner diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml index eab64cbb833..938fe3a930d 100644 --- a/jetty-security/pom.xml +++ b/jetty-security/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-security diff --git a/jetty-server/pom.xml b/jetty-server/pom.xml index 6783cd56477..0a896388277 100644 --- a/jetty-server/pom.xml +++ b/jetty-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-server diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml index 3110b01e2ab..800185414ce 100644 --- a/jetty-servlet/pom.xml +++ b/jetty-servlet/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-servlet diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml index 64f4be9f4d9..7ad310e2db9 100644 --- a/jetty-servlets/pom.xml +++ b/jetty-servlets/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-servlets diff --git a/jetty-spring/pom.xml b/jetty-spring/pom.xml index e501d524b92..031899c3a5c 100644 --- a/jetty-spring/pom.xml +++ b/jetty-spring/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-spring diff --git a/jetty-start/pom.xml b/jetty-start/pom.xml index 9ac84e8f52f..24f81d350c4 100644 --- a/jetty-start/pom.xml +++ b/jetty-start/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-start diff --git a/jetty-unixsocket/pom.xml b/jetty-unixsocket/pom.xml index 1ca105d052b..05999a7d57f 100644 --- a/jetty-unixsocket/pom.xml +++ b/jetty-unixsocket/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-unixsocket diff --git a/jetty-util-ajax/pom.xml b/jetty-util-ajax/pom.xml index fbbf73f5e39..5ec5e4a8b31 100644 --- a/jetty-util-ajax/pom.xml +++ b/jetty-util-ajax/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-util-ajax diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml index 7448b556c40..eb1cec02549 100644 --- a/jetty-util/pom.xml +++ b/jetty-util/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-util diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml index 9c2c784e2fd..b7f749f7f37 100644 --- a/jetty-webapp/pom.xml +++ b/jetty-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-webapp diff --git a/jetty-websocket/javax-websocket-client-impl/pom.xml b/jetty-websocket/javax-websocket-client-impl/pom.xml index 4196320f48a..debef1d5fcc 100644 --- a/jetty-websocket/javax-websocket-client-impl/pom.xml +++ b/jetty-websocket/javax-websocket-client-impl/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/javax-websocket-server-impl/pom.xml b/jetty-websocket/javax-websocket-server-impl/pom.xml index 5a520aa89c8..28c2611ced1 100644 --- a/jetty-websocket/javax-websocket-server-impl/pom.xml +++ b/jetty-websocket/javax-websocket-server-impl/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/jetty-websocket-tests/pom.xml b/jetty-websocket/jetty-websocket-tests/pom.xml index b07ea1e6e99..92586768b1a 100644 --- a/jetty-websocket/jetty-websocket-tests/pom.xml +++ b/jetty-websocket/jetty-websocket-tests/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml index 3f471b0ca15..7fff95ef50f 100644 --- a/jetty-websocket/pom.xml +++ b/jetty-websocket/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml index 625b3caa23c..d40341634fc 100644 --- a/jetty-websocket/websocket-api/pom.xml +++ b/jetty-websocket/websocket-api/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml index 00261942717..b8fa8ec2f39 100644 --- a/jetty-websocket/websocket-client/pom.xml +++ b/jetty-websocket/websocket-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml index c447af5f9ee..819c72ffcf4 100644 --- a/jetty-websocket/websocket-common/pom.xml +++ b/jetty-websocket/websocket-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml index 804b34e501b..e406f52595c 100644 --- a/jetty-websocket/websocket-server/pom.xml +++ b/jetty-websocket/websocket-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml index 51b3fcf181e..4e2bb079e69 100644 --- a/jetty-websocket/websocket-servlet/pom.xml +++ b/jetty-websocket/websocket-servlet/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.websocket websocket-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/jetty-xml/pom.xml b/jetty-xml/pom.xml index 2788d200c74..71f7bbb923a 100644 --- a/jetty-xml/pom.xml +++ b/jetty-xml/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jetty-xml diff --git a/pom.xml b/pom.xml index 21fbd2b9ccc..d56e0036994 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT Jetty :: Project The Eclipse Jetty Project pom diff --git a/tests/pom.xml b/tests/pom.xml index b7ffbb3f10f..9380b0e9f13 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty jetty-project - 9.4.20.v20190813 + 9.4.21-SNAPSHOT ../pom.xml org.eclipse.jetty.tests diff --git a/tests/test-continuation/pom.xml b/tests/test-continuation/pom.xml index c9ab028975c..fb2e99bd502 100644 --- a/tests/test-continuation/pom.xml +++ b/tests/test-continuation/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-distribution/pom.xml b/tests/test-distribution/pom.xml index e0505f5eeb4..e146b846e4c 100644 --- a/tests/test-distribution/pom.xml +++ b/tests/test-distribution/pom.xml @@ -2,7 +2,7 @@ tests-parent org.eclipse.jetty.tests - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/tests/test-http-client-transport/pom.xml b/tests/test-http-client-transport/pom.xml index c762e2c46d0..a2f2a483930 100644 --- a/tests/test-http-client-transport/pom.xml +++ b/tests/test-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/tests/test-integration/pom.xml b/tests/test-integration/pom.xml index 2bebc9bfe30..c1fa7d1cad9 100644 --- a/tests/test-integration/pom.xml +++ b/tests/test-integration/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 test-integration diff --git a/tests/test-jmx/jmx-webapp-it/pom.xml b/tests/test-jmx/jmx-webapp-it/pom.xml index 1ca8d64fca3..ecc90386a74 100644 --- a/tests/test-jmx/jmx-webapp-it/pom.xml +++ b/tests/test-jmx/jmx-webapp-it/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 jmx-webapp-it diff --git a/tests/test-jmx/jmx-webapp/pom.xml b/tests/test-jmx/jmx-webapp/pom.xml index 7c25280dc56..62ed7347147 100644 --- a/tests/test-jmx/jmx-webapp/pom.xml +++ b/tests/test-jmx/jmx-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT jmx-webapp war diff --git a/tests/test-jmx/pom.xml b/tests/test-jmx/pom.xml index 6d2fecd7768..bb752c9b753 100644 --- a/tests/test-jmx/pom.xml +++ b/tests/test-jmx/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 test-jmx-parent diff --git a/tests/test-loginservice/pom.xml b/tests/test-loginservice/pom.xml index e1e793925c4..8fd4088e006 100644 --- a/tests/test-loginservice/pom.xml +++ b/tests/test-loginservice/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT test-loginservice Jetty Tests :: Login Service diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml index c630d98cae0..84b1a0a49a5 100644 --- a/tests/test-quickstart/pom.xml +++ b/tests/test-quickstart/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-sessions/pom.xml b/tests/test-sessions/pom.xml index c7ce501e527..e557500f227 100644 --- a/tests/test-sessions/pom.xml +++ b/tests/test-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT test-sessions-parent Jetty Tests :: Sessions :: Parent diff --git a/tests/test-sessions/test-file-sessions/pom.xml b/tests/test-sessions/test-file-sessions/pom.xml index 196024f3792..2bfd3a2e3b6 100644 --- a/tests/test-sessions/test-file-sessions/pom.xml +++ b/tests/test-sessions/test-file-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT test-file-sessions Jetty Tests :: Sessions :: File diff --git a/tests/test-sessions/test-gcloud-sessions/pom.xml b/tests/test-sessions/test-gcloud-sessions/pom.xml index eacd5bebc35..d1dafe6aac1 100644 --- a/tests/test-sessions/test-gcloud-sessions/pom.xml +++ b/tests/test-sessions/test-gcloud-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT test-gcloud-sessions Jetty Tests :: Sessions :: GCloud diff --git a/tests/test-sessions/test-hazelcast-sessions/pom.xml b/tests/test-sessions/test-hazelcast-sessions/pom.xml index cc707764602..c1a8ee3cde8 100644 --- a/tests/test-sessions/test-hazelcast-sessions/pom.xml +++ b/tests/test-sessions/test-hazelcast-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT test-hazelcast-sessions Jetty Tests :: Sessions :: Hazelcast diff --git a/tests/test-sessions/test-infinispan-sessions/pom.xml b/tests/test-sessions/test-infinispan-sessions/pom.xml index cd547b250eb..4f0f8dcd30c 100644 --- a/tests/test-sessions/test-infinispan-sessions/pom.xml +++ b/tests/test-sessions/test-infinispan-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT test-infinispan-sessions Jetty Tests :: Sessions :: Infinispan diff --git a/tests/test-sessions/test-jdbc-sessions/pom.xml b/tests/test-sessions/test-jdbc-sessions/pom.xml index 9cc4e901584..7d7305a3a23 100644 --- a/tests/test-sessions/test-jdbc-sessions/pom.xml +++ b/tests/test-sessions/test-jdbc-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT test-jdbc-sessions Jetty Tests :: Sessions :: JDBC diff --git a/tests/test-sessions/test-memcached-sessions/pom.xml b/tests/test-sessions/test-memcached-sessions/pom.xml index e950d60e22a..2835576ec89 100644 --- a/tests/test-sessions/test-memcached-sessions/pom.xml +++ b/tests/test-sessions/test-memcached-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT test-memcached-sessions Jetty Tests :: Sessions :: Memcached diff --git a/tests/test-sessions/test-mongodb-sessions/pom.xml b/tests/test-sessions/test-mongodb-sessions/pom.xml index f3ffe156e36..0e3476e1195 100644 --- a/tests/test-sessions/test-mongodb-sessions/pom.xml +++ b/tests/test-sessions/test-mongodb-sessions/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT test-mongodb-sessions Jetty Tests :: Sessions :: Mongo diff --git a/tests/test-sessions/test-sessions-common/pom.xml b/tests/test-sessions/test-sessions-common/pom.xml index 14e59bb5d59..670efdebbba 100644 --- a/tests/test-sessions/test-sessions-common/pom.xml +++ b/tests/test-sessions/test-sessions-common/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT test-sessions-common Jetty Tests :: Sessions :: Common diff --git a/tests/test-webapps/pom.xml b/tests/test-webapps/pom.xml index ac9a8510d52..b2242f515de 100644 --- a/tests/test-webapps/pom.xml +++ b/tests/test-webapps/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests tests-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT ../pom.xml test-webapps-parent diff --git a/tests/test-webapps/test-cdi-common-webapp/pom.xml b/tests/test-webapps/test-cdi-common-webapp/pom.xml index 9528a16537e..848df73f026 100644 --- a/tests/test-webapps/test-cdi-common-webapp/pom.xml +++ b/tests/test-webapps/test-cdi-common-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/tests/test-webapps/test-felix-webapp/pom.xml b/tests/test-webapps/test-felix-webapp/pom.xml index 323d5c78434..d763790856d 100644 --- a/tests/test-webapps/test-felix-webapp/pom.xml +++ b/tests/test-webapps/test-felix-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/tests/test-webapps/test-http2-webapp/pom.xml b/tests/test-webapps/test-http2-webapp/pom.xml index 806d7d8bc01..b640eea3af1 100644 --- a/tests/test-webapps/test-http2-webapp/pom.xml +++ b/tests/test-webapps/test-http2-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/tests/test-webapps/test-jaas-webapp/pom.xml b/tests/test-webapps/test-jaas-webapp/pom.xml index 47b33028cc9..b0b771a6b76 100644 --- a/tests/test-webapps/test-jaas-webapp/pom.xml +++ b/tests/test-webapps/test-jaas-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT test-jaas-webapp Jetty Tests :: WebApp :: JAAS diff --git a/tests/test-webapps/test-jetty-webapp/pom.xml b/tests/test-webapps/test-jetty-webapp/pom.xml index 90396f05402..8a77bc4f272 100644 --- a/tests/test-webapps/test-jetty-webapp/pom.xml +++ b/tests/test-webapps/test-jetty-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-webapps/test-jndi-webapp/pom.xml b/tests/test-webapps/test-jndi-webapp/pom.xml index 246b6befa88..f1478932625 100644 --- a/tests/test-webapps/test-jndi-webapp/pom.xml +++ b/tests/test-webapps/test-jndi-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT test-jndi-webapp Jetty Tests :: WebApp :: JNDI diff --git a/tests/test-webapps/test-mock-resources/pom.xml b/tests/test-webapps/test-mock-resources/pom.xml index 04cff5cb542..a06aefe5531 100644 --- a/tests/test-webapps/test-mock-resources/pom.xml +++ b/tests/test-webapps/test-mock-resources/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT Jetty Tests :: WebApp :: Mock Resources test-mock-resources diff --git a/tests/test-webapps/test-owb-cdi-webapp/pom.xml b/tests/test-webapps/test-owb-cdi-webapp/pom.xml index 476fb18aab8..2f55adf2c72 100644 --- a/tests/test-webapps/test-owb-cdi-webapp/pom.xml +++ b/tests/test-webapps/test-owb-cdi-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 diff --git a/tests/test-webapps/test-proxy-webapp/pom.xml b/tests/test-webapps/test-proxy-webapp/pom.xml index e8b06fb1cf8..52434d0662b 100644 --- a/tests/test-webapps/test-proxy-webapp/pom.xml +++ b/tests/test-webapps/test-proxy-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-webapps/test-servlet-spec/pom.xml b/tests/test-webapps/test-servlet-spec/pom.xml index 27227c8e928..835b8f3a262 100644 --- a/tests/test-webapps/test-servlet-spec/pom.xml +++ b/tests/test-webapps/test-servlet-spec/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT test-servlet-spec-parent Jetty Tests :: Spec Test WebApp :: Parent diff --git a/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml b/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml index 460fef2975c..2f7ca3829d7 100644 --- a/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT test-container-initializer jar diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml index 2567862c57b..11716a3c56a 100644 --- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT Jetty Tests :: Webapps :: Spec Webapp test-spec-webapp diff --git a/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml b/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml index eb05803cdfe..6848dde3e48 100644 --- a/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-servlet-spec-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT Jetty Tests :: WebApp :: Servlet Spec :: Fragment Jar diff --git a/tests/test-webapps/test-simple-webapp/pom.xml b/tests/test-webapps/test-simple-webapp/pom.xml index b7940ee84f0..9d4e40977b4 100644 --- a/tests/test-webapps/test-simple-webapp/pom.xml +++ b/tests/test-webapps/test-simple-webapp/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT test-simple-webapp diff --git a/tests/test-webapps/test-webapp-rfc2616/pom.xml b/tests/test-webapps/test-webapp-rfc2616/pom.xml index b84ba5a1c3a..c0fcb0d02af 100644 --- a/tests/test-webapps/test-webapp-rfc2616/pom.xml +++ b/tests/test-webapps/test-webapp-rfc2616/pom.xml @@ -4,7 +4,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT test-webapp-rfc2616 Jetty Tests :: WebApp :: RFC2616 diff --git a/tests/test-webapps/test-weld-cdi-webapp/pom.xml b/tests/test-webapps/test-weld-cdi-webapp/pom.xml index e9cd59c9b90..0d2779daacd 100644 --- a/tests/test-webapps/test-weld-cdi-webapp/pom.xml +++ b/tests/test-webapps/test-weld-cdi-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.4.20.v20190813 + 9.4.21-SNAPSHOT 4.0.0 From 11d1ad65043726ac31f536b55f0321a91948c776 Mon Sep 17 00:00:00 2001 From: Lachlan Roberts Date: Thu, 15 Aug 2019 08:04:03 +1000 Subject: [PATCH 3/7] disable flaky test WebSocketConnectionStatsTest Signed-off-by: Lachlan Roberts --- .../jetty/websocket/tests/WebSocketConnectionStatsTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/WebSocketConnectionStatsTest.java b/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/WebSocketConnectionStatsTest.java index cb25fa4d1f1..41e79c01b86 100644 --- a/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/WebSocketConnectionStatsTest.java +++ b/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/WebSocketConnectionStatsTest.java @@ -46,6 +46,7 @@ import org.eclipse.jetty.websocket.servlet.WebSocketServlet; import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import static org.hamcrest.MatcherAssert.assertThat; @@ -120,6 +121,7 @@ public class WebSocketConnectionStatsTest return buffer.position() - pos; } + @Disabled("Flaky test see issue #3982") @Test public void echoStatsTest() throws Exception { From 7d7d932288d236cfc740294d2a510478de1de44d Mon Sep 17 00:00:00 2001 From: Lachlan Roberts Date: Thu, 15 Aug 2019 09:16:05 +1000 Subject: [PATCH 4/7] Issue #3968 - remove public from methods in ReadState Signed-off-by: Lachlan Roberts --- .../eclipse/jetty/websocket/common/io/ReadState.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/ReadState.java b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/ReadState.java index 5b7bcf9e4e9..e80937700d5 100644 --- a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/ReadState.java +++ b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/ReadState.java @@ -28,12 +28,10 @@ class ReadState { private static final Logger LOG = Log.getLogger(ReadState.class); - public static final ByteBuffer NO_ACTION = BufferUtil.EMPTY_BUFFER; - private State state = State.READING; private ByteBuffer buffer; - public ByteBuffer getBuffer() + ByteBuffer getBuffer() { synchronized (this) { @@ -57,7 +55,7 @@ class ReadState } } - public Action getAction(ByteBuffer buffer) + Action getAction(ByteBuffer buffer) { synchronized (this) { @@ -152,7 +150,7 @@ class ReadState } } - public void discard() + void discard() { synchronized (this) { @@ -189,7 +187,7 @@ class ReadState } } - public enum Action + enum Action { FILL, PARSE, From af6c675023a24d61b32726fab8fcfe3e7bbfb41a Mon Sep 17 00:00:00 2001 From: Jan Bartel Date: Thu, 15 Aug 2019 12:27:18 +1000 Subject: [PATCH 5/7] Issue #3913 Fix races in session request reference counting (#3947) * Issue #3913 Fix races in session request reference counting Signed-off-by: Jan Bartel --- .../org/eclipse/jetty/server/HttpChannel.java | 2 +- .../org/eclipse/jetty/server/Request.java | 75 ++++++ .../server/session/AbstractSessionCache.java | 96 ++++++- .../eclipse/jetty/server/session/Session.java | 45 +++- .../jetty/server/session/SessionCache.java | 27 +- .../jetty/server/session/SessionHandler.java | 229 ++++++++-------- .../ClusteredSessionMigrationTest.java | 1 + ...bstractClusteredSessionScavengingTest.java | 35 ++- .../AbstractWebAppObjectInSessionTest.java | 17 +- .../session/TestContextScopeListener.java | 23 +- .../jetty/server/session/AsyncTest.java | 150 ++++++++--- .../jetty/server/session/CreationTest.java | 7 +- .../session/DefaultSessionCacheTest.java | 245 +++++++++++------- .../server/session/DirtyAttributeTest.java | 9 +- .../jetty/server/session/IdleSessionTest.java | 64 ++++- .../server/session/NullSessionCacheTest.java | 13 +- .../server/session/SaveOptimizeTest.java | 66 ++++- .../server/session/SessionRenewTest.java | 116 ++++++++- 18 files changed, 894 insertions(+), 326 deletions(-) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java index e67aa1cf626..bd2ad60a63b 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java @@ -759,8 +759,8 @@ public class HttpChannel implements Runnable, HttpOutput.Interceptor if (idleTO >= 0 && getIdleTimeout() != _oldIdleTimeout) setIdleTimeout(_oldIdleTimeout); + _request.onCompleted(); notifyComplete(_request); - _transport.onCompleted(); } diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java index e8c4b2960f8..76388346ccb 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java @@ -222,6 +222,7 @@ public class Request implements HttpServletRequest private long _timeStamp; private MultiParts _multiParts; //if the request is a multi-part mime private AsyncContextState _async; + private List _sessions; //list of sessions used during lifetime of request public Request(HttpChannel channel, HttpInput input) { @@ -368,6 +369,39 @@ public class Request implements HttpServletRequest if (listener instanceof AsyncListener) throw new IllegalArgumentException(listener.getClass().toString()); } + + /** + * Remember a session that this request has just entered. + * + * @param s the session + */ + public void enterSession(HttpSession s) + { + if (s == null) + return; + + if (_sessions == null) + _sessions = new ArrayList<>(); + if (LOG.isDebugEnabled()) + LOG.debug("Request {} entering session={}", this, s); + _sessions.add(s); + } + + /** + * Complete this request's access to a session. + * + * @param s the session + */ + private void leaveSession(HttpSession s) + { + if (s == null) + return; + + Session session = (Session)s; + if (LOG.isDebugEnabled()) + LOG.debug("Request {} leaving session {}", this, session); + session.getSessionHandler().complete(session); + } private MultiMap getParameters() { @@ -1467,6 +1501,46 @@ public class Request implements HttpServletRequest return session.getId(); } + /** + * Called when the request is fully finished being handled. + * For every session in any context that the session has + * accessed, ensure that the session is completed. + */ + public void onCompleted() + { + if (_sessions != null && _sessions.size() > 0) + { + for (HttpSession s:_sessions) + leaveSession(s); + } + } + + /** + * Find a session that this request has already entered for the + * given SessionHandler + * + * @param sessionHandler the SessionHandler (ie context) to check + * @return + */ + public HttpSession getSession(SessionHandler sessionHandler) + { + if (_sessions == null || _sessions.size() == 0 || sessionHandler == null) + return null; + + HttpSession session = null; + + for (HttpSession s:_sessions) + { + Session ss = Session.class.cast(s); + if (sessionHandler == ss.getSessionHandler()) + { + session = s; + break; + } + } + return session; + } + /* * @see javax.servlet.http.HttpServletRequest#getSession() */ @@ -1789,6 +1863,7 @@ public class Request implements HttpServletRequest _inputState = INPUT_NONE; _multiParts = null; _remote = null; + _sessions = null; _input.recycle(); } diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionCache.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionCache.java index 18ecfbaa66f..529515ab381 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionCache.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionCache.java @@ -111,12 +111,13 @@ public abstract class AbstractSessionCache extends ContainerLifeCycle implements public abstract Session newSession(HttpServletRequest request, SessionData data); /** - * Get the session matching the key + * Get the session matching the key from the cache. Does not load + * the session. * * @param id session id * @return the Session object matching the id */ - public abstract Session doGet(String id); + protected abstract Session doGet(String id); /** * Put the session into the map if it wasn't already there @@ -125,7 +126,7 @@ public abstract class AbstractSessionCache extends ContainerLifeCycle implements * @param session the session object * @return null if the session wasn't already in the map, or the existing entry otherwise */ - public abstract Session doPutIfAbsent(String id, Session session); + protected abstract Session doPutIfAbsent(String id, Session session); /** * Replace the mapping from id to oldValue with newValue @@ -135,7 +136,7 @@ public abstract class AbstractSessionCache extends ContainerLifeCycle implements * @param newValue the new value * @return true if replacement was done */ - public abstract boolean doReplace(String id, Session oldValue, Session newValue); + protected abstract boolean doReplace(String id, Session oldValue, Session newValue); /** * Remove the session with this identity from the store @@ -300,12 +301,28 @@ public abstract class AbstractSessionCache extends ContainerLifeCycle implements * * If the session object is not in this session store, try getting * the data for it from a SessionDataStore associated with the - * session manager. + * session manager. The usage count of the session is incremented. * * @see org.eclipse.jetty.server.session.SessionCache#get(java.lang.String) */ @Override public Session get(String id) throws Exception + { + return getAndEnter(id, true); + } + + /** Get a session object. + * + * If the session object is not in this session store, try getting + * the data for it from a SessionDataStore associated with the + * session manager. + * + * @param id The session to retrieve + * @param enter if true, the usage count of the session will be incremented + * @return + * @throws Exception + */ + protected Session getAndEnter(String id, boolean enter) throws Exception { Session session = null; Exception ex = null; @@ -320,7 +337,7 @@ public abstract class AbstractSessionCache extends ContainerLifeCycle implements if (session == null) { if (LOG.isDebugEnabled()) - LOG.debug("Session {} not found locally, attempting to load", id); + LOG.debug("Session {} not found locally in {}, attempting to load", id, this); //didn't get a session, try and create one and put in a placeholder for it PlaceHolderSession phs = new PlaceHolderSession(_handler, new SessionData(id, null, null, 0, 0, 0, 0)); @@ -357,6 +374,8 @@ public abstract class AbstractSessionCache extends ContainerLifeCycle implements { //successfully swapped in the session session.setResident(true); + if (enter) + session.use(); phsLock.close(); break; } @@ -383,7 +402,10 @@ public abstract class AbstractSessionCache extends ContainerLifeCycle implements session = null; continue; } + //I will use this session too session = s; + if (enter) + session.use(); break; } } @@ -401,6 +423,8 @@ public abstract class AbstractSessionCache extends ContainerLifeCycle implements } //got the session + if (enter) + session.use(); break; } } @@ -447,7 +471,47 @@ public abstract class AbstractSessionCache extends ContainerLifeCycle implements } /** - * Put the Session object back into the session store. + * Add an entirely new session (created by the application calling Request.getSession(true)) + * to the cache. The usage count of the fresh session is incremented. + * + * @param id the id + * @param session + */ + @Override + public void add(String id, Session session) throws Exception + { + if (id == null || session == null) + throw new IllegalArgumentException("Add key=" + id + " session=" + (session == null ? "null" : session.getId())); + + try (Lock lock = session.lock()) + { + if (session.getSessionHandler() == null) + throw new IllegalStateException("Session " + id + " is not managed"); + + if (!session.isValid()) + throw new IllegalStateException("Session " + id + " is not valid"); + + if (doPutIfAbsent(id, session) == null) + { + session.setResident(true); //its in the cache + session.use(); //the request is using it + } + else + throw new IllegalStateException("Session " + id + " already in cache"); + } + } + + /** + * @deprecated + */ + @Override + public void put(String id, Session session) throws Exception + { + release(id, session); + } + + /** + * Finish using the Session object. * * This should be called when a request exists the session. Only when the last * simultaneous request exists the session will any action be taken. @@ -459,10 +523,10 @@ public abstract class AbstractSessionCache extends ContainerLifeCycle implements * If the evictionPolicy == SessionCache.EVICT_ON_SESSION_EXIT then after we have saved * the session, we evict it from the cache. * - * @see org.eclipse.jetty.server.session.SessionCache#put(java.lang.String, org.eclipse.jetty.server.session.Session) + * @see org.eclipse.jetty.server.session.SessionCache#release(java.lang.String, org.eclipse.jetty.server.session.Session) */ @Override - public void put(String id, Session session) throws Exception + public void release(String id, Session session) throws Exception { if (id == null || session == null) throw new IllegalArgumentException("Put key=" + id + " session=" + (session == null ? "null" : session.getId())); @@ -472,9 +536,11 @@ public abstract class AbstractSessionCache extends ContainerLifeCycle implements if (session.getSessionHandler() == null) throw new IllegalStateException("Session " + id + " is not managed"); - if (!session.isValid()) + if (session.isInvalid()) return; + session.complete(); + //don't do anything with the session until the last request for it has finished if ((session.getRequests() <= 0)) { @@ -586,7 +652,7 @@ public abstract class AbstractSessionCache extends ContainerLifeCycle implements public Session delete(String id) throws Exception { //get the session, if its not in memory, this will load it - Session session = get(id); + Session session = getAndEnter(id, false); //Always delete it from the backing data store if (_sessionDataStore != null) @@ -657,7 +723,8 @@ public abstract class AbstractSessionCache extends ContainerLifeCycle implements LOG.debug("Checking for idle {}", session.getId()); try (Lock s = session.lock()) { - if (getEvictionPolicy() > 0 && session.isIdleLongerThan(getEvictionPolicy()) && session.isValid() && session.isResident() && session.getRequests() <= 0) + if (getEvictionPolicy() > 0 && session.isIdleLongerThan(getEvictionPolicy()) + && session.isValid() && session.isResident() && session.getRequests() <= 0) { //Be careful with saveOnInactiveEviction - you may be able to re-animate a session that was //being managed on another node and has expired. @@ -696,7 +763,7 @@ public abstract class AbstractSessionCache extends ContainerLifeCycle implements if (StringUtil.isBlank(newId)) throw new IllegalArgumentException("New session id is null"); - Session session = get(oldId); + Session session = getAndEnter(oldId, true); renewSessionId(session, newId, newExtendedId); return session; @@ -787,6 +854,7 @@ public abstract class AbstractSessionCache extends ContainerLifeCycle implements public String toString() { return String.format("%s@%x[evict=%d,removeUnloadable=%b,saveOnCreate=%b,saveOnInactiveEvict=%b]", - this.getClass().getName(), this.hashCode(), _evictionPolicy, _removeUnloadableSessions, _saveOnCreate, _saveOnInactiveEviction); + this.getClass().getName(), this.hashCode(), _evictionPolicy, + _removeUnloadableSessions, _saveOnCreate, _saveOnInactiveEviction); } } diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/Session.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/Session.java index 24ca7dafe76..440883d23db 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/Session.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/Session.java @@ -84,6 +84,7 @@ public class Session implements SessionHandler.SessionIf protected final SessionHandler _handler; // the manager of the session protected String _extendedId; // the _id plus the worker name + protected long _requests; protected boolean _idChanged; @@ -127,7 +128,8 @@ public class Session implements SessionHandler.SessionIf { //grab the lock and check what happened to the session: if it didn't get evicted and //it hasn't expired, we need to reset the timer - if (Session.this.isResident() && Session.this.getRequests() <= 0 && Session.this.isValid() && !Session.this.isExpiredAt(now)) + if (Session.this.isResident() && Session.this.getRequests() <= 0 && Session.this.isValid() && + !Session.this.isExpiredAt(now)) { //session wasn't expired or evicted, we need to reset the timer SessionInactivityTimer.this.schedule(Session.this.calculateInactivityTimeout(now)); @@ -195,8 +197,6 @@ public class Session implements SessionHandler.SessionIf _sessionData = data; _newSession = true; _sessionData.setDirty(true); - _requests = 1; // access will not be called on this new session, but we - // are obviously in a request _sessionInactivityTimer = new SessionInactivityTimer(); } @@ -239,11 +239,24 @@ public class Session implements SessionHandler.SessionIf } } + protected void use() + { + try (Lock lock = _lock.lock()) + { + _requests++; + + // temporarily stop the idle timer + if (LOG.isDebugEnabled()) + LOG.debug("Session {} in use, stopping timer, active requests={}", getId(), _requests); + _sessionInactivityTimer.cancel(); + } + } + protected boolean access(long time) { try (Lock lock = _lock.lock()) { - if (!isValid()) + if (!isValid() || !isResident()) return false; _newSession = false; long lastAccessed = _sessionData.getAccessed(); @@ -255,13 +268,6 @@ public class Session implements SessionHandler.SessionIf invalidate(); return false; } - _requests++; - - // temporarily stop the idle timer - if (LOG.isDebugEnabled()) - LOG.debug("Session {} accessed, stopping timer, active requests={}", getId(), _requests); - _sessionInactivityTimer.cancel(); - return true; } } @@ -374,7 +380,7 @@ public class Session implements SessionHandler.SessionIf public void didActivate() { HttpSessionEvent event = new HttpSessionEvent(this); - for (Iterator iter = _sessionData.getKeys().iterator(); iter.hasNext(); ) + for (Iterator iter = _sessionData.getKeys().iterator(); iter.hasNext();) { Object value = _sessionData.getAttribute(iter.next()); if (value instanceof HttpSessionActivationListener) @@ -391,7 +397,7 @@ public class Session implements SessionHandler.SessionIf public void willPassivate() { HttpSessionEvent event = new HttpSessionEvent(this); - for (Iterator iter = _sessionData.getKeys().iterator(); iter.hasNext(); ) + for (Iterator iter = _sessionData.getKeys().iterator(); iter.hasNext();) { Object value = _sessionData.getAttribute(iter.next()); if (value instanceof HttpSessionActivationListener) @@ -410,6 +416,14 @@ public class Session implements SessionHandler.SessionIf } } + public boolean isInvalid() + { + try (Lock lock = _lock.lock()) + { + return _state == State.INVALID || _state == State.INVALIDATING; + } + } + public boolean isChanging() { checkLocked(); @@ -574,7 +588,8 @@ public class Session implements SessionHandler.SessionIf time = (remaining > 0 ? (Math.min(maxInactive, TimeUnit.SECONDS.toMillis(evictionPolicy))) : 0); if (LOG.isDebugEnabled()) - LOG.debug("Session {} timer set to lesser of maxInactive={} and inactivityEvict={}", getId(), maxInactive, evictionPolicy); + LOG.debug("Session {} timer set to lesser of maxInactive={} and inactivityEvict={}", getId(), + maxInactive, evictionPolicy); } } } @@ -965,6 +980,8 @@ public class Session implements SessionHandler.SessionIf { try { + if (LOG.isDebugEnabled()) + LOG.debug("Session {} waiting for id change to complete", _sessionData.getId()); _stateChangeCompleted.await(); } catch (InterruptedException e) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionCache.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionCache.java index 27d54404c1d..eb2fabc35a6 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionCache.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionCache.java @@ -118,6 +118,16 @@ public interface SessionCache extends LifeCycle { return renewSessionId(oldId, newId); } + + /** + * Adds a new Session, with a never-before-used id, + * to the cache. + * + * @param id + * @param session + * @throws Exception + */ + void add(String id, Session session) throws Exception; /** * Get an existing Session. If necessary, the cache will load the data for @@ -138,9 +148,24 @@ public interface SessionCache extends LifeCycle * @param id the session id * @param session the current session object * @throws Exception if any error occurred + * @deprecated @see release */ void put(String id, Session session) throws Exception; - + + + /** + * Finish using a Session. This is called by the SessionHandler + * once a request is finished with a Session. SessionCache + * implementations may want to delay writing out Session contents + * until the last request exits a Session. + * + * @param id the session id + * @param session the current session object + * @throws Exception if any error occurred + */ + void release(String id, Session session) throws Exception; + + /** * Check to see if a Session is in the cache. Does NOT consult * the SessionDataStore. diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionHandler.java index 34603aff8bd..4547353f090 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionHandler.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionHandler.java @@ -18,6 +18,8 @@ package org.eclipse.jetty.server.session; +import static java.lang.Math.round; + import java.io.IOException; import java.util.Arrays; import java.util.Collections; @@ -29,8 +31,7 @@ import java.util.List; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; -import javax.servlet.AsyncEvent; -import javax.servlet.AsyncListener; + import javax.servlet.DispatcherType; import javax.servlet.ServletException; import javax.servlet.SessionCookieConfig; @@ -64,8 +65,6 @@ import org.eclipse.jetty.util.thread.Locker.Lock; import org.eclipse.jetty.util.thread.ScheduledExecutorScheduler; import org.eclipse.jetty.util.thread.Scheduler; -import static java.lang.Math.round; - /** * SessionHandler. */ @@ -74,7 +73,8 @@ public class SessionHandler extends ScopedHandler { static final Logger LOG = Log.getLogger("org.eclipse.jetty.server.session"); - public static final EnumSet DEFAULT_TRACKING = EnumSet.of(SessionTrackingMode.COOKIE, SessionTrackingMode.URL); + public static final EnumSet DEFAULT_TRACKING = EnumSet.of(SessionTrackingMode.COOKIE, + SessionTrackingMode.URL); /** * Session cookie name. @@ -127,7 +127,8 @@ public class SessionHandler extends ScopedHandler @SuppressWarnings("unchecked") public static final Class[] SESSION_LISTENER_TYPES = - new Class[]{ + new Class[] + { HttpSessionAttributeListener.class, HttpSessionIdListener.class, HttpSessionListener.class @@ -140,54 +141,6 @@ public class SessionHandler extends ScopedHandler */ public static final java.math.BigDecimal MAX_INACTIVE_MINUTES = new java.math.BigDecimal(Integer.MAX_VALUE / 60); - /** - * SessionAsyncListener - * - * Used to ensure that a request for which async has been started - * has its session completed as the request exits the context. - */ - public class SessionAsyncListener implements AsyncListener - { - @Override - public void onComplete(AsyncEvent event) throws IOException - { - // An async request has completed, so we can complete the session, - // but we must locate the session instance for this context - Request request = Request.getBaseRequest(event.getAsyncContext().getRequest()); - HttpSession session = request.getSession(false); - String id; - if (session != null) - id = session.getId(); - else - { - id = (String)request.getAttribute(DefaultSessionIdManager.__NEW_SESSION_ID); - if (id == null) - id = request.getRequestedSessionId(); - } - - if (id != null) - complete(getSession(id)); - } - - @Override - public void onTimeout(AsyncEvent event) throws IOException - { - - } - - @Override - public void onError(AsyncEvent event) throws IOException - { - complete(Request.getBaseRequest(event.getAsyncContext().getRequest()).getSession(false)); - } - - @Override - public void onStartAsync(AsyncEvent event) throws IOException - { - event.getAsyncContext().addListener(this); - } - } - static final HttpSessionContext __nullSessionContext = new HttpSessionContext() { @Override @@ -243,7 +196,6 @@ public class SessionHandler extends ScopedHandler protected Scheduler _scheduler; protected boolean _ownScheduler = false; - protected final SessionAsyncListener _sessionAsyncListener = new SessionAsyncListener(); /** * Constructor. @@ -285,9 +237,8 @@ public class SessionHandler extends ScopedHandler // Do we need to refresh the cookie? if (isUsingCookies() && (s.isIdChanged() || - (getSessionCookieConfig().getMaxAge() > 0 && getRefreshCookieAge() > 0 && ((now - s.getCookieSetTime()) / 1000 > getRefreshCookieAge())) - ) - ) + (getSessionCookieConfig().getMaxAge() > 0 && getRefreshCookieAge() > 0 + && ((now - s.getCookieSetTime())/1000 > getRefreshCookieAge())))) { HttpCookie cookie = getSessionCookie(session, _context == null ? "/" : (_context.getContextPath()), secure); s.cookieSet(); @@ -413,11 +364,9 @@ public class SessionHandler extends ScopedHandler return; Session s = ((SessionIf)session).getSession(); - try { - s.complete(); - _sessionCache.put(s.getId(), s); + _sessionCache.release(s.getId(), s); } catch (Exception e) { @@ -428,22 +377,7 @@ public class SessionHandler extends ScopedHandler @Deprecated public void complete(Session session, Request baseRequest) { - ensureCompletion(baseRequest); - } - - private void ensureCompletion(Request baseRequest) - { - if (baseRequest.isAsyncStarted()) - { - if (LOG.isDebugEnabled()) - LOG.debug("Adding AsyncListener for {}", baseRequest); - if (!baseRequest.getHttpChannelState().hasListener(_sessionAsyncListener)) - baseRequest.getAsyncContext().addListener(_sessionAsyncListener); - } - else - { - complete(baseRequest.getSession(false)); - } + //not used } /* @@ -581,11 +515,11 @@ public class SessionHandler extends ScopedHandler * @param extendedId the session id * @return the HttpSession with the corresponding id or null if no session with the given id exists */ - public HttpSession getHttpSession(String extendedId) + protected HttpSession getHttpSession(String extendedId) { String id = getSessionIdManager().getId(extendedId); - Session session = getSession(id); + if (session != null && !session.getExtendedId().equals(extendedId)) session.setIdChanged(true); return session; @@ -813,7 +747,8 @@ public class SessionHandler extends ScopedHandler try { - _sessionCache.put(id, session); + _sessionCache.add(id, session); + Request.getBaseRequest(request).enterSession(session); _sessionsCreatedStats.increment(); if (request != null && request.isSecure()) @@ -912,7 +847,8 @@ public class SessionHandler extends ScopedHandler public void setSessionIdPathParameterName(String param) { _sessionIdPathParameterName = (param == null || "none".equals(param)) ? null : param; - _sessionIdPathParameterNamePrefix = (param == null || "none".equals(param)) ? null : (";" + _sessionIdPathParameterName + "="); + _sessionIdPathParameterNamePrefix = (param == null || "none".equals(param)) ? + null : (";" + _sessionIdPathParameterName + "="); } /** @@ -929,7 +865,7 @@ public class SessionHandler extends ScopedHandler * @param id The session ID stripped of any worker name. * @return A Session or null if none exists. */ - public Session getSession(String id) + protected Session getSession(String id) { try { @@ -953,7 +889,6 @@ public class SessionHandler extends ScopedHandler } session.setExtendedId(_sessionIdManager.getExtendedId(id, null)); - //session.getSessionData().setLastNode(_sessionIdManager.getWorkerName()); //TODO write through the change of node? } return session; } @@ -1159,9 +1094,11 @@ public class SessionHandler extends ScopedHandler */ public void renewSessionId(String oldId, String oldExtendedId, String newId, String newExtendedId) { + Session session = null; try { - Session session = _sessionCache.renewSessionId(oldId, newId, oldExtendedId, newExtendedId); //swap the id over + //the use count for the session will be incremented in renewSessionId + session = _sessionCache.renewSessionId(oldId, newId, oldExtendedId, newExtendedId); //swap the id over if (session == null) { //session doesn't exist on this context @@ -1175,6 +1112,20 @@ public class SessionHandler extends ScopedHandler { LOG.warn(e); } + finally + { + if (session != null) + { + try + { + _sessionCache.release(newId, session); + } + catch (Exception e) + { + LOG.warn(e); + } + } + } } /** @@ -1337,7 +1288,8 @@ public class SessionHandler extends ScopedHandler //most efficient if it can be done as a bulk operation to eg reduce //roundtrips to the persistent store. Only do this if the HouseKeeper that //does the scavenging is configured to actually scavenge - if (_sessionIdManager.getSessionHouseKeeper() != null && _sessionIdManager.getSessionHouseKeeper().getIntervalSec() > 0) + if (_sessionIdManager.getSessionHouseKeeper() != null + && _sessionIdManager.getSessionHouseKeeper().getIntervalSec() > 0) { _candidateSessionIdsForExpiry.add(session.getId()); if (LOG.isDebugEnabled()) @@ -1509,7 +1461,8 @@ public class SessionHandler extends ScopedHandler * @see org.eclipse.jetty.server.Handler#handle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, int) */ @Override - public void doScope(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException + public void doScope(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) + throws IOException, ServletException { SessionHandler oldSessionHandler = null; HttpSession oldSession = null; @@ -1518,27 +1471,57 @@ public class SessionHandler extends ScopedHandler try { if (LOG.isDebugEnabled()) - LOG.debug("SessionHandler.doScope"); + LOG.debug("Entering scope {}, dispatch={} asyncstarted={}", this, baseRequest.getDispatcherType(), baseRequest + .isAsyncStarted()); - oldSessionHandler = baseRequest.getSessionHandler(); - oldSession = baseRequest.getSession(false); - - if (oldSessionHandler != this) + switch (baseRequest.getDispatcherType()) { - // new session context - baseRequest.setSessionHandler(this); - baseRequest.setSession(null); - checkRequestedSessionId(baseRequest, request); - } + case REQUEST: + { + //there are no previous sessionhandlers or sessions for dispatch=REQUEST + //look for a session for this context + baseRequest.setSession(null); + checkRequestedSessionId(baseRequest, request); + existingSession = baseRequest.getSession(false); + baseRequest.setSessionHandler(this); + baseRequest.setSession(existingSession); //can be null + break; + } + case ASYNC: + case ERROR: + case FORWARD: + case INCLUDE: + { + //remember previous sessionhandler and session + oldSessionHandler = baseRequest.getSessionHandler(); + oldSession = baseRequest.getSession(false); - // access any existing session for this context - existingSession = baseRequest.getSession(false); + //find any existing session for this request that has already been accessed + existingSession = baseRequest.getSession(this); + if (existingSession == null) + { + //session for this context has not been visited previously, + //try getting it + baseRequest.setSession(null); + checkRequestedSessionId(baseRequest, request); + existingSession = baseRequest.getSession(false); + } + + baseRequest.setSession(existingSession); + baseRequest.setSessionHandler(this); + break; + } + default: + break; + } if ((existingSession != null) && (oldSessionHandler != this)) { HttpCookie cookie = access(existingSession, request.isSecure()); // Handle changed ID or max-age refresh, but only if this is not a redispatched request - if ((cookie != null) && (request.getDispatcherType() == DispatcherType.ASYNC || request.getDispatcherType() == DispatcherType.REQUEST)) + if ((cookie != null) + && (request.getDispatcherType() == DispatcherType.ASYNC + || request.getDispatcherType() == DispatcherType.REQUEST)) baseRequest.getResponse().replaceCookie(cookie); } @@ -1554,13 +1537,10 @@ public class SessionHandler extends ScopedHandler } finally { - //if there is a session that was created during handling this context, then complete it if (LOG.isDebugEnabled()) - LOG.debug("FinalSession={}, old_session_handler={}, this={}, calling complete={}", baseRequest.getSession(false), oldSessionHandler, this, (oldSessionHandler != this)); - - // If we are leaving the scope of this session handler, ensure the session is completed - if (oldSessionHandler != this) - ensureCompletion(baseRequest); + LOG.debug("Leaving scope {} dispatch={}, async={}, session={}, oldsession={}, oldsessionhandler={}", + this, baseRequest.getDispatcherType(), baseRequest.isAsyncStarted(), baseRequest.getSession(false), + oldSession, oldSessionHandler); // revert the session handler to the previous, unless it was null, in which case remember it as // the first session handler encountered. @@ -1576,7 +1556,8 @@ public class SessionHandler extends ScopedHandler * @see org.eclipse.jetty.server.Handler#handle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, int) */ @Override - public void doHandle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException + public void doHandle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) + throws IOException, ServletException { nextHandle(target, baseRequest, request, response); } @@ -1596,7 +1577,10 @@ public class SessionHandler extends ScopedHandler HttpSession session = getHttpSession(requestedSessionId); if (session != null && isValid(session)) + { + baseRequest.enterSession(session); //enter session for first time baseRequest.setSession(session); + } return; } else if (!DispatcherType.REQUEST.equals(baseRequest.getDispatcherType())) @@ -1605,7 +1589,7 @@ public class SessionHandler extends ScopedHandler boolean requestedSessionIdFromCookie = false; HttpSession session = null; - // Look for session id cookie + //first try getting id from a cookie if (isUsingCookies()) { Cookie[] cookies = request.getCookies(); @@ -1618,31 +1602,21 @@ public class SessionHandler extends ScopedHandler { requestedSessionId = cookies[i].getValue(); requestedSessionIdFromCookie = true; - if (LOG.isDebugEnabled()) - LOG.debug("Got Session ID {} from cookie", requestedSessionId); - + LOG.debug("Got Session ID {} from cookie {}", requestedSessionId, sessionCookie); if (requestedSessionId != null) { - session = getHttpSession(requestedSessionId); - if (session != null && isValid(session)) - { - break; - } - } - else - { - LOG.warn("null session id from cookie"); + break; } } } } } - if (isUsingURLs() && (requestedSessionId == null || session == null)) + //try getting id from a url + if (isUsingURLs() && (requestedSessionId == null)) { String uri = request.getRequestURI(); - String prefix = getSessionIdPathParameterNamePrefix(); if (prefix != null) { @@ -1661,7 +1635,6 @@ public class SessionHandler extends ScopedHandler requestedSessionId = uri.substring(s, i); requestedSessionIdFromCookie = false; - session = getHttpSession(requestedSessionId); if (LOG.isDebugEnabled()) LOG.debug("Got Session ID {} from URL", requestedSessionId); } @@ -1670,8 +1643,16 @@ public class SessionHandler extends ScopedHandler baseRequest.setRequestedSessionId(requestedSessionId); baseRequest.setRequestedSessionIdFromCookie(requestedSessionId != null && requestedSessionIdFromCookie); - if (session != null && isValid(session)) - baseRequest.setSession(session); + + if (requestedSessionId != null) + { + session = getHttpSession(requestedSessionId); + if (session != null && isValid(session)) + { + baseRequest.enterSession(session); //request enters this session for first time + baseRequest.setSession(session); + } + } } /** diff --git a/tests/test-sessions/test-jdbc-sessions/src/test/java/org/eclipse/jetty/server/session/ClusteredSessionMigrationTest.java b/tests/test-sessions/test-jdbc-sessions/src/test/java/org/eclipse/jetty/server/session/ClusteredSessionMigrationTest.java index 8351ce26627..c8a5937f597 100644 --- a/tests/test-sessions/test-jdbc-sessions/src/test/java/org/eclipse/jetty/server/session/ClusteredSessionMigrationTest.java +++ b/tests/test-sessions/test-jdbc-sessions/src/test/java/org/eclipse/jetty/server/session/ClusteredSessionMigrationTest.java @@ -68,6 +68,7 @@ public class ClusteredSessionMigrationTest extends AbstractTestBase DefaultSessionCacheFactory cacheFactory = new DefaultSessionCacheFactory(); cacheFactory.setEvictionPolicy(SessionCache.NEVER_EVICT); + cacheFactory.setSaveOnCreate(true); //immediately save the session when it is created so node2 can see it SessionDataStoreFactory storeFactory = createSessionDataStoreFactory(); ((AbstractSessionDataStoreFactory)storeFactory).setGracePeriodSec(TestServer.DEFAULT_SCAVENGE_SEC); diff --git a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractClusteredSessionScavengingTest.java b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractClusteredSessionScavengingTest.java index b4435f3fa87..d812834eb30 100644 --- a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractClusteredSessionScavengingTest.java +++ b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractClusteredSessionScavengingTest.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.io.PrintWriter; import java.util.HashSet; import java.util.Set; +import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @@ -76,6 +77,8 @@ public abstract class AbstractClusteredSessionScavengingTest extends AbstractTes TestServlet servlet1 = new TestServlet(); ServletHolder holder1 = new ServletHolder(servlet1); ServletContextHandler context = server1.addContext(contextPath); + TestContextScopeListener scopeListener = new TestContextScopeListener(); + context.addEventListener(scopeListener); TestSessionListener listener1 = new TestSessionListener(); context.getSessionHandler().addEventListener(listener1); context.addServlet(holder1, servletMapping); @@ -93,6 +96,8 @@ public abstract class AbstractClusteredSessionScavengingTest extends AbstractTes ((AbstractSessionDataStoreFactory)storeFactory2).setSavePeriodSec(0); //always save when the session exits TestServer server2 = new TestServer(0, maxInactivePeriod, scavengePeriod, cacheFactory2, storeFactory2); ServletContextHandler context2 = server2.addContext(contextPath); + TestContextScopeListener scopeListener2 = new TestContextScopeListener(); + context2.addEventListener(scopeListener2); context2.addServlet(TestServlet.class, servletMapping); SessionHandler m2 = context2.getSessionHandler(); @@ -105,18 +110,26 @@ public abstract class AbstractClusteredSessionScavengingTest extends AbstractTes try { // Perform one request to server1 to create a session + CountDownLatch synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); ContentResponse response1 = client.GET("http://localhost:" + port1 + contextPath + servletMapping.substring(1) + "?action=init"); assertEquals(HttpServletResponse.SC_OK, response1.getStatus()); - assertEquals("test", response1.getContentAsString()); + assertTrue(response1.getContentAsString().startsWith("init")); String sessionCookie = response1.getHeaders().get("Set-Cookie"); assertTrue(sessionCookie != null); + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + assertEquals(1, ((DefaultSessionCache)m1.getSessionCache()).getSessionsCurrent()); assertEquals(1, ((DefaultSessionCache)m1.getSessionCache()).getSessionsMax()); assertEquals(1, ((DefaultSessionCache)m1.getSessionCache()).getSessionsTotal()); // Mangle the cookie, replacing Path with $Path, etc. sessionCookie = sessionCookie.replaceFirst("(\\W)(P|p)ath=", "$1\\$Path="); String id = TestServer.extractSessionId(sessionCookie); - Session s1 = m1.getSessionCache().get(id); + + //Peek at the contents of the cache without doing all the reference counting etc + Session s1 = ((AbstractSessionCache)m1.getSessionCache()).doGet(id); assertNotNull(s1); long expiry = s1.getSessionData().getExpiry(); @@ -128,11 +141,15 @@ public abstract class AbstractClusteredSessionScavengingTest extends AbstractTes long time = start; while (time < end) { + synchronizer = new CountDownLatch(1); + scopeListener2.setExitSynchronizer(synchronizer); Request request = client.newRequest("http://localhost:" + port2 + contextPath + servletMapping.substring(1)); request.header("Cookie", sessionCookie); //use existing session ContentResponse response2 = request.send(); assertEquals(HttpServletResponse.SC_OK, response2.getStatus()); - assertEquals("test", response2.getContentAsString()); + assertTrue(response2.getContentAsString().startsWith("test")); + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); Thread.sleep(requestInterval); assertSessionCounts(1, 1, 1, m2); time = System.currentTimeMillis(); @@ -208,20 +225,22 @@ public abstract class AbstractClusteredSessionScavengingTest extends AbstractTes if ("init".equals(action)) { HttpSession session = request.getSession(true); - session.setAttribute("test", "test"); + session.setAttribute("test", "init"); sendResult(session, httpServletResponse.getWriter()); } else { HttpSession session = request.getSession(false); - // if we node hopped we should get the session and test should already be present - sendResult(session, httpServletResponse.getWriter()); if (session != null) { session.setAttribute("test", "test"); } + + // if we node hopped we should get the session and test should already be present + sendResult(session, httpServletResponse.getWriter()); + } } @@ -229,11 +248,11 @@ public abstract class AbstractClusteredSessionScavengingTest extends AbstractTes { if (session != null) { - writer.print(session.getAttribute("test")); + writer.println(session.getAttribute("test")); } else { - writer.print("null"); + writer.println("null"); } } } diff --git a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractWebAppObjectInSessionTest.java b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractWebAppObjectInSessionTest.java index c084fa9e927..967085da2f9 100644 --- a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractWebAppObjectInSessionTest.java +++ b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractWebAppObjectInSessionTest.java @@ -21,6 +21,9 @@ package org.eclipse.jetty.server.session; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.client.HttpClient; @@ -29,6 +32,7 @@ import org.eclipse.jetty.client.api.Request; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.util.IO; import org.eclipse.jetty.util.resource.Resource; +import org.eclipse.jetty.webapp.WebAppContext; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -98,7 +102,10 @@ public abstract class AbstractWebAppObjectInSessionTest extends AbstractTestBase TestServer server1 = new TestServer(0, TestServer.DEFAULT_MAX_INACTIVE, TestServer.DEFAULT_SCAVENGE_SEC, cacheFactory, storeFactory); - server1.addWebAppContext(warDir.getCanonicalPath(), contextPath).addServlet(WebAppObjectInSessionServlet.class.getName(), servletMapping); + WebAppContext wac1 = server1.addWebAppContext(warDir.getCanonicalPath(), contextPath); + TestContextScopeListener scopeListener = new TestContextScopeListener(); + wac1.addEventListener(scopeListener); + wac1.addServlet(WebAppObjectInSessionServlet.class.getName(), servletMapping); try { @@ -119,16 +126,20 @@ public abstract class AbstractWebAppObjectInSessionTest extends AbstractTestBase try { // Perform one request to server1 to create a session + CountDownLatch synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); Request request = client.newRequest("http://localhost:" + port1 + contextPath + servletMapping + "?action=set"); request.method(HttpMethod.GET); - ContentResponse response = request.send(); assertEquals(HttpServletResponse.SC_OK, response.getStatus()); String sessionCookie = response.getHeaders().get("Set-Cookie"); assertTrue(sessionCookie != null); // Mangle the cookie, replacing Path with $Path, etc. sessionCookie = sessionCookie.replaceFirst("(\\W)(P|p)ath=", "$1\\$Path="); - + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + // Perform a request to server2 using the session cookie from the previous request Request request2 = client.newRequest("http://localhost:" + port2 + contextPath + servletMapping + "?action=get"); request2.method(HttpMethod.GET); diff --git a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestContextScopeListener.java b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestContextScopeListener.java index bf1362ac5ea..34a3351860c 100644 --- a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestContextScopeListener.java +++ b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestContextScopeListener.java @@ -21,12 +21,16 @@ package org.eclipse.jetty.server.session; import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicReference; +import org.eclipse.jetty.server.HttpChannel.Listener; +import org.eclipse.jetty.server.HttpChannelState; +import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.handler.ContextHandler.Context; import org.eclipse.jetty.server.handler.ContextHandler.ContextScopeListener; public class TestContextScopeListener implements ContextScopeListener { AtomicReference _exitSynchronizer = new AtomicReference<>(); + boolean listenerAdded = false; /** * @return the exitSynchronizer @@ -51,9 +55,22 @@ public class TestContextScopeListener implements ContextScopeListener } @Override - public void exitScope(Context context, org.eclipse.jetty.server.Request request) + public void exitScope(final Context context, final org.eclipse.jetty.server.Request request) { - if (_exitSynchronizer.get() != null) - _exitSynchronizer.get().countDown(); + if (request != null && !listenerAdded) + { + listenerAdded=true; + request.getHttpChannel().addListener(new Listener() + { + @Override + public void onComplete(Request request) + { + Listener.super.onComplete(request); + if (_exitSynchronizer.get() != null) + _exitSynchronizer.get().countDown(); + } + + }); + } } } diff --git a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/AsyncTest.java b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/AsyncTest.java index f15d606fe8a..7f4dcee3d7c 100644 --- a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/AsyncTest.java +++ b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/AsyncTest.java @@ -20,6 +20,9 @@ package org.eclipse.jetty.server.session; import java.io.IOException; import java.lang.reflect.Proxy; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + import javax.servlet.AsyncContext; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; @@ -48,15 +51,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue; */ public class AsyncTest { - public static class LatchServlet extends HttpServlet - { - @Override - protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException - { - resp.getWriter().println("Latched"); - } - } - @Test public void testSessionWithAsyncDispatch() throws Exception { @@ -71,12 +65,11 @@ public class AsyncTest String mapping = "/server"; ServletContextHandler contextHandler = server.addContext(contextPath); + TestContextScopeListener scopeListener = new TestContextScopeListener(); + contextHandler.addEventListener(scopeListener); TestServlet servlet = new TestServlet(); ServletHolder holder = new ServletHolder(servlet); contextHandler.addServlet(holder, mapping); - LatchServlet latchServlet = new LatchServlet(); - ServletHolder latchHolder = new ServletHolder(latchServlet); - contextHandler.addServlet(latchHolder, "/latch"); server.start(); int port = server.getPort(); @@ -88,16 +81,17 @@ public class AsyncTest String url = "http://localhost:" + port + contextPath + mapping + "?action=async"; //make a request to set up a session on the server + CountDownLatch synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); ContentResponse response = client.GET(url); assertEquals(HttpServletResponse.SC_OK, response.getStatus()); String sessionCookie = response.getHeaders().get("Set-Cookie"); assertTrue(sessionCookie != null); - - //make another request, when this is handled, the first request is definitely finished being handled - response = client.GET("http://localhost:" + port + contextPath + "/latch"); - assertEquals(HttpServletResponse.SC_OK, response.getStatus()); - + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + //session should now be evicted from the cache after request exited String id = TestServer.extractSessionId(sessionCookie); assertFalse(contextHandler.getSessionHandler().getSessionCache().contains(id)); @@ -108,7 +102,6 @@ public class AsyncTest server.stop(); } } - @Test public void testSessionWithAsyncComplete() throws Exception { @@ -123,12 +116,11 @@ public class AsyncTest String mapping = "/server"; ServletContextHandler contextHandler = server.addContext(contextPath); + TestContextScopeListener scopeListener = new TestContextScopeListener(); + contextHandler.addEventListener(scopeListener); TestServlet servlet = new TestServlet(); ServletHolder holder = new ServletHolder(servlet); contextHandler.addServlet(holder, mapping); - LatchServlet latchServlet = new LatchServlet(); - ServletHolder latchHolder = new ServletHolder(latchServlet); - contextHandler.addServlet(latchHolder, "/latch"); server.start(); int port = server.getPort(); @@ -140,18 +132,19 @@ public class AsyncTest String url = "http://localhost:" + port + contextPath + mapping + "?action=asyncComplete"; //make a request to set up a session on the server + CountDownLatch synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); ContentResponse response = client.GET(url); assertEquals(HttpServletResponse.SC_OK, response.getStatus()); String sessionCookie = response.getHeaders().get("Set-Cookie"); assertTrue(sessionCookie != null); + String id = TestServer.extractSessionId(sessionCookie); - //make another request, when this is handled, the first request is definitely finished being handled - response = client.GET("http://localhost:" + port + contextPath + "/latch"); - assertEquals(HttpServletResponse.SC_OK, response.getStatus()); + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); //session should now be evicted from the cache after request exited - String id = TestServer.extractSessionId(sessionCookie); assertFalse(contextHandler.getSessionHandler().getSessionCache().contains(id)); assertTrue(contextHandler.getSessionHandler().getSessionCache().getSessionDataStore().exists(id)); } @@ -173,6 +166,8 @@ public class AsyncTest TestServer server = new TestServer(0, -1, -1, cacheFactory, storeFactory); ServletContextHandler contextA = server.addContext("/ctxA"); + TestContextScopeListener scopeListener = new TestContextScopeListener(); + contextA.addEventListener(scopeListener); //just pick one of the contexts to register the listener CrossContextServlet ccServlet = new CrossContextServlet(); ServletHolder ccHolder = new ServletHolder(ccServlet); contextA.addServlet(ccHolder, "/*"); @@ -181,9 +176,7 @@ public class AsyncTest TestServlet testServlet = new TestServlet(); ServletHolder testHolder = new ServletHolder(testServlet); contextB.addServlet(testHolder, "/*"); - LatchServlet latchServlet = new LatchServlet(); - ServletHolder latchHolder = new ServletHolder(latchServlet); - contextB.addServlet(latchHolder, "/latch"); + server.start(); int port = server.getPort(); @@ -195,15 +188,16 @@ public class AsyncTest String url = "http://localhost:" + port + "/ctxA/test?action=async"; //make a request to set up a session on the server + CountDownLatch synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); ContentResponse response = client.GET(url); assertEquals(HttpServletResponse.SC_OK, response.getStatus()); String sessionCookie = response.getHeaders().get("Set-Cookie"); assertTrue(sessionCookie != null); - //make another request, when this is handled, the first request is definitely finished being handled - response = client.GET("http://localhost:" + port + "/ctxB/latch"); - assertEquals(HttpServletResponse.SC_OK, response.getStatus()); + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); //session should now be evicted from the cache after request exited String id = TestServer.extractSessionId(sessionCookie); @@ -216,6 +210,62 @@ public class AsyncTest } } + @Test + public void testSessionCreatedBeforeDispatch() throws Exception + { + + DefaultSessionCacheFactory cacheFactory = new DefaultSessionCacheFactory(); + cacheFactory.setEvictionPolicy(SessionCache.EVICT_ON_SESSION_EXIT); + SessionDataStoreFactory storeFactory = new TestSessionDataStoreFactory(); + TestServer server = new TestServer(0, -1, -1, cacheFactory, storeFactory); + + String contextPath = ""; + String mapping = "/server"; + + ServletContextHandler contextHandler = server.addContext(contextPath); + TestContextScopeListener scopeListener = new TestContextScopeListener(); + contextHandler.addEventListener(scopeListener); + + TestServlet servlet = new TestServlet(); + ServletHolder holder = new ServletHolder(servlet); + contextHandler.addServlet(holder, mapping); + + + server.start(); + int port = server.getPort(); + + try (StacklessLogging stackless = new StacklessLogging(Log.getLogger("org.eclipse.jetty.server.session"))) + { + HttpClient client = new HttpClient(); + client.start(); + String url = "http://localhost:" + port + contextPath + mapping + "?action=asyncWithSession"; + + //make a request to set up a session on the server + CountDownLatch synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); + ContentResponse response = client.GET(url); + assertEquals(HttpServletResponse.SC_OK, response.getStatus()); + + String sessionCookie = response.getHeaders().get("Set-Cookie"); + assertTrue(sessionCookie != null); + String id = TestServer.extractSessionId(sessionCookie); + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + + //session should now be evicted from the cache after request exited + assertFalse(contextHandler.getSessionHandler().getSessionCache().contains(id)); + assertTrue(contextHandler.getSessionHandler().getSessionCache().getSessionDataStore().exists(id)); + } + finally + { + server.stop(); + } + } + + + + @Test public void testSessionWithCrossContextAsyncComplete() throws Exception { @@ -229,6 +279,8 @@ public class AsyncTest TestServer server = new TestServer(0, -1, -1, cacheFactory, storeFactory); ServletContextHandler contextA = server.addContext("/ctxA"); + TestContextScopeListener scopeListener = new TestContextScopeListener(); + contextA.addEventListener(scopeListener); //just pick a context CrossContextServlet ccServlet = new CrossContextServlet(); ServletHolder ccHolder = new ServletHolder(ccServlet); contextA.addServlet(ccHolder, "/*"); @@ -237,29 +289,28 @@ public class AsyncTest TestServlet testServlet = new TestServlet(); ServletHolder testHolder = new ServletHolder(testServlet); contextB.addServlet(testHolder, "/*"); - LatchServlet latchServlet = new LatchServlet(); - ServletHolder latchHolder = new ServletHolder(latchServlet); - contextB.addServlet(latchHolder, "/latch"); server.start(); int port = server.getPort(); - + HttpClient client = new HttpClient(); + try (StacklessLogging stackless = new StacklessLogging(Log.getLogger("org.eclipse.jetty.server.session"))) { - HttpClient client = new HttpClient(); + client.start(); String url = "http://localhost:" + port + "/ctxA/test?action=asyncComplete"; //make a request to set up a session on the server + CountDownLatch synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); ContentResponse response = client.GET(url); assertEquals(HttpServletResponse.SC_OK, response.getStatus()); String sessionCookie = response.getHeaders().get("Set-Cookie"); + assertTrue(sessionCookie != null); - - //make another request, when this is handled, the first request is definitely finished being handled - response = client.GET("http://localhost:" + port + "/ctxB/latch"); - assertEquals(HttpServletResponse.SC_OK, response.getStatus()); + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); //session should now be evicted from the cache A after request exited String id = TestServer.extractSessionId(sessionCookie); @@ -268,6 +319,7 @@ public class AsyncTest } finally { + client.stop(); server.stop(); } } @@ -313,6 +365,22 @@ public class AsyncTest response.getWriter().println("OK"); } } + else if ("asyncWithSession".equals(action)) + { + if (request.getAttribute("asyncWithSession") == null) + { + request.setAttribute("asyncWithSession", Boolean.TRUE); + AsyncContext acontext = request.startAsync(); + HttpSession session = request.getSession(true); + acontext.dispatch(); + return; + } + else + { + response.getWriter().println("OK"); + } + + } else if ("asyncComplete".equals(action)) { AsyncContext acontext = request.startAsync(); @@ -324,7 +392,7 @@ public class AsyncTest { if (out.isReady()) { - request.getSession(true); + HttpSession s = request.getSession(true); out.print("OK\n"); acontext.complete(); } diff --git a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/CreationTest.java b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/CreationTest.java index a5efc7a9c7c..7c8e8872d56 100644 --- a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/CreationTest.java +++ b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/CreationTest.java @@ -113,10 +113,10 @@ public class CreationTest Request request = client.newRequest("http://localhost:" + port1 + contextPath + servletMapping + "?action=test"); response = request.send(); assertEquals(HttpServletResponse.SC_OK, response.getStatus()); - + //ensure request has finished being handled synchronizer.await(5, TimeUnit.SECONDS); - + //session should now be evicted from the cache again assertFalse(contextHandler.getSessionHandler().getSessionCache().contains(TestServer.extractSessionId(sessionCookie))); } @@ -406,6 +406,7 @@ public class CreationTest if (action != null && action.startsWith("forward")) { HttpSession session = request.getSession(true); + _id = session.getId(); session.setAttribute("value", new Integer(1)); @@ -414,7 +415,9 @@ public class CreationTest dispatcherB.forward(request, httpServletResponse); if (action.endsWith("inv")) + { session.invalidate(); + } else { session = request.getSession(false); diff --git a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/DefaultSessionCacheTest.java b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/DefaultSessionCacheTest.java index 27d10fed62e..4b381f772ab 100644 --- a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/DefaultSessionCacheTest.java +++ b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/DefaultSessionCacheTest.java @@ -18,25 +18,29 @@ package org.eclipse.jetty.server.session; -import java.util.Collections; -import java.util.Set; -import java.util.concurrent.TimeUnit; -import javax.servlet.http.HttpSessionActivationListener; -import javax.servlet.http.HttpSessionEvent; - -import org.eclipse.jetty.server.Request; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.SessionIdManager; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.junit.jupiter.api.Test; - import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; + +import java.util.Collections; +import java.util.Random; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpSessionActivationListener; +import javax.servlet.http.HttpSessionEvent; + +import org.eclipse.jetty.server.Request; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.junit.jupiter.api.Test; /** * DefaultSessionCacheTest @@ -61,90 +65,131 @@ public class DefaultSessionCacheTest ++activateCalls; } } - + + @Test - public void testRenewIdMultipleRequests() throws Exception + public void testRenewWithInvalidate() throws Exception { //Test that invalidation happens on ALL copies of the session that are in-use by requests - Server server = new Server(); - - SessionIdManager sessionIdManager = new DefaultSessionIdManager(server); - server.setSessionIdManager(sessionIdManager); - ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); - context.setContextPath("/test"); - context.setServer(server); - context.getSessionHandler().setMaxInactiveInterval((int)TimeUnit.DAYS.toSeconds(1)); - context.getSessionHandler().setSessionIdManager(sessionIdManager); + int inactivePeriod = 20; + int scavengePeriod = 3; DefaultSessionCacheFactory cacheFactory = new DefaultSessionCacheFactory(); cacheFactory.setSaveOnCreate(true); //ensures that a session is persisted as soon as it is created + cacheFactory.setEvictionPolicy(SessionCache.NEVER_EVICT); + SessionDataStoreFactory storeFactory = new TestSessionDataStoreFactory(); + TestServer server = new TestServer(0, inactivePeriod, scavengePeriod, cacheFactory, storeFactory); + ServletContextHandler contextHandler = server.addContext("/test"); + TestContextScopeListener scopeListener = new TestContextScopeListener(); + contextHandler.addEventListener(scopeListener); - DefaultSessionCache cache = (DefaultSessionCache)cacheFactory.getSessionCache(context.getSessionHandler()); - - TestSessionDataStore store = new TestSessionDataStore(); - cache.setSessionDataStore(store); - context.getSessionHandler().setSessionCache(cache); TestHttpSessionListener listener = new TestHttpSessionListener(); - context.getSessionHandler().addEventListener(listener); + contextHandler.getSessionHandler().addEventListener(listener); - server.setHandler(context); try { server.start(); - //create a new session - Session s = (Session)context.getSessionHandler().newHttpSession(null); - String id = s.getId(); - context.getSessionHandler().access(s, false); //simulate accessing the request - context.getSessionHandler().complete(s); //simulate completing the request + //Make a session + Request req0 = new Request(null, null); + HttpSession session = contextHandler.getSessionHandler().newHttpSession(req0); //pretend request created session + String id = session.getId(); + req0.onCompleted(); //pretend request exited - //make 1st request - final Session session = context.getSessionHandler().getSession(id); //get the session again - assertNotNull(session); - context.getSessionHandler().access(session, false); //simulate accessing the request + assertTrue(contextHandler.getSessionHandler().getSessionCache().contains(id)); - //make 2nd request - final Session session2 = context.getSessionHandler().getSession(id); //get the session again - context.getSessionHandler().access(session2, false); //simulate accessing the request - assertNotNull(session2); - assertTrue(session == session2); + //Make a fake request that does not exit the session + Request req1 = new Request(null, null); + HttpSession s1 = contextHandler.getSessionHandler().getHttpSession(id); + assertNotNull(s1); + assertSame(session, s1); + req1.enterSession(s1); + req1.setSessionHandler(contextHandler.getSessionHandler()); + assertTrue(contextHandler.getSessionHandler().getSessionCache().contains(id)); + assertEquals(1, ((Session)session).getRequests()); - Thread t2 = new Thread(new Runnable() + //Make another fake request that does not exit the session + Request req2 = new Request(null, null); + HttpSession s2 = contextHandler.getSessionHandler().getHttpSession(id); + assertNotNull(s2); + assertSame(session, s2); + req2.enterSession(s2); + req2.setSessionHandler(contextHandler.getSessionHandler()); + assertEquals(2, ((Session)session).getRequests()); + + //Renew the session id + Request req3 = new Request(null, null); + final HttpSession s3 = contextHandler.getSessionHandler().getHttpSession(id); + assertNotNull(s3); + assertSame(session, s3); + req3.enterSession(s3); + req3.setSessionHandler(contextHandler.getSessionHandler()); + + //Invalidate the session + Request req4 = new Request(null, null); + final HttpSession s4 = contextHandler.getSessionHandler().getHttpSession(id); + assertNotNull(s4); + assertSame(session, s4); + req4.enterSession(s4); + req4.setSessionHandler(contextHandler.getSessionHandler()); + + Thread renewThread = new Thread(new Runnable() { @Override public void run() { - System.err.println("Starting session id renewal"); - session2.renewId(new Request(null, null)); - System.err.println("Finished session id renewal"); - } - }); - t2.start(); + //simulate req3 calling Request.changeSessionId + String oldid = ((Session)s3).getId(); //old id - Thread t = new Thread(new Runnable() - { - - @Override - public void run() - { - System.err.println("Starting invalidation"); + //Session may already be invalid depending on timing try { - Thread.sleep(1000L); + ((Session)s3).renewId(req3); + //After this call, the session must have changed id, and it may also be + //invalid, depending on timing. + assertFalse(oldid.equals(((Session)s3).getId())); } - catch (Exception e) + catch (IllegalStateException e) { - e.printStackTrace(); + //the session was invalid before we called renewId + } + catch (Throwable e) + { + //anything else is a failure + fail(e); + } + } + } + ); + + Thread invalidateThread = new Thread(new Runnable() + { + + @Override + public void run() + { + //simulate req4 doing an invalidate that we hope overlaps with req3 renewId + try + { + Random random = new Random(); + if ((random.nextInt(10) % 2) == 0) + Thread.currentThread().sleep(2); //small sleep to try and make timing more random + ((Session)s4).invalidate(); + assertFalse(((Session)s4).isValid()); + } + catch (InterruptedException e) + { + } - session.invalidate(); - System.err.println("Finished invalidation"); } } ); - t.start(); - t.join(); - t2.join(); + invalidateThread.start(); + renewThread.start(); + renewThread.join(); + invalidateThread.join(); + } finally { @@ -180,10 +225,10 @@ public class DefaultSessionCacheTest SessionData data = store.newSessionData("1234", now - 20, now - 10, now - 20, TimeUnit.MINUTES.toMillis(10)); Session session = cache.newSession(data); TestSessionActivationListener listener = new TestSessionActivationListener(); - cache.put("1234", session); + cache.add("1234", session); assertTrue(cache.contains("1234")); session.setAttribute("aaa", listener); - cache.put("1234", session); + cache.release("1234", session); assertTrue(store.exists("1234")); assertTrue(cache.contains("1234")); @@ -255,7 +300,7 @@ public class DefaultSessionCacheTest long now = System.currentTimeMillis(); SessionData data = store.newSessionData("1234", now - 20, now - 10, now - 20, TimeUnit.MINUTES.toMillis(10)); Session session = cache.newSession(data); - cache.put("1234", session); + cache.add("1234", session); assertTrue(cache.contains("1234")); cache.renewSessionId("1234", "5678", "1234.foo", "5678.foo"); @@ -293,10 +338,11 @@ public class DefaultSessionCacheTest SessionData data = store.newSessionData("1234", now - 20, now - 10, now - 20, TimeUnit.MINUTES.toMillis(10)); Session session = cache.newSession(data); - //put the session in the cache - cache.put("1234", session); + //ensure the session is in the cache + cache.add("1234", session); - assertNotNull(cache.get("1234")); + //peek into the cache and see if it is there + assertTrue(((AbstractSessionCache)cache).contains("1234")); } /** @@ -329,13 +375,14 @@ public class DefaultSessionCacheTest assertFalse(cache.contains("1234")); Session session = cache.get("1234"); + assertEquals(1, session.getRequests()); assertNotNull(session); assertEquals("1234", session.getId()); assertEquals(now - 20, session.getCreationTime()); } @Test - public void testPutRequestsStillActive() + public void testAdd() throws Exception { Server server = new Server(); @@ -353,20 +400,23 @@ public class DefaultSessionCacheTest context.getSessionHandler().setSessionCache(cache); context.start(); - //make a session + //add data for a session to the store long now = System.currentTimeMillis(); SessionData data = store.newSessionData("1234", now - 20, now - 10, now - 20, TimeUnit.MINUTES.toMillis(10)); data.setExpiry(now + TimeUnit.DAYS.toMillis(1)); + + //create a session for the existing session data, add it to the cache Session session = cache.newSession(data); - session.access(now); //simulate request still active - cache.put("1234", session); + cache.add("1234", session); + + assertEquals(1, session.getRequests()); assertTrue(session.isResident()); assertTrue(cache.contains("1234")); assertFalse(store.exists("1234")); } @Test - public void testPutLastRequest() + public void testRelease() throws Exception { Server server = new Server(); @@ -384,14 +434,19 @@ public class DefaultSessionCacheTest context.getSessionHandler().setSessionCache(cache); context.start(); - //make a session + //create data for a session in the store long now = System.currentTimeMillis(); SessionData data = store.newSessionData("1234", now - 20, now - 10, now - 20, TimeUnit.MINUTES.toMillis(10)); data.setExpiry(now + TimeUnit.DAYS.toMillis(1)); + + //make a session for the existing id, add to cache Session session = cache.newSession(data); - session.access(now); //simulate request still active - session.complete(); //simulate request exiting - cache.put("1234", session); + cache.add("1234", session); + + //release use of newly added session + cache.release("1234", session); + + assertEquals(0, session.getRequests()); assertTrue(session.isResident()); assertTrue(cache.contains("1234")); assertTrue(store.exists("1234")); @@ -426,9 +481,7 @@ public class DefaultSessionCacheTest long now = System.currentTimeMillis(); SessionData data = store.newSessionData("1234", now - 20, now - 10, now - 20, TimeUnit.MINUTES.toMillis(10)); Session session = cache.newSession(data); - - //put the session in the cache - cache.put("1234", session); + cache.add("1234", session); assertTrue(cache.contains("1234")); } @@ -465,7 +518,7 @@ public class DefaultSessionCacheTest //test one that exists in the cache also Session session = cache.newSession(data); - cache.put("1234", session); + cache.add("1234", session); assertTrue(cache.exists("1234")); } @@ -484,6 +537,7 @@ public class DefaultSessionCacheTest DefaultSessionCacheFactory cacheFactory = new DefaultSessionCacheFactory(); cacheFactory.setEvictionPolicy(SessionCache.NEVER_EVICT); + cacheFactory.setSaveOnCreate(true); DefaultSessionCache cache = (DefaultSessionCache)cacheFactory.getSessionCache(context.getSessionHandler()); TestSessionDataStore store = new TestSessionDataStore(); @@ -505,9 +559,8 @@ public class DefaultSessionCacheTest assertFalse(cache.contains("1234")); //test remove of session in both store and cache - data = store.newSessionData("1234", now - 20, now - 10, now - 20, TimeUnit.MINUTES.toMillis(10)); - session = cache.newSession(data); - cache.put("1234", session); + session = cache.newSession(null, "1234",now - 20 ,TimeUnit.MINUTES.toMillis(10));//saveOnCreate ensures write to store + cache.add("1234", session); assertTrue(store.exists("1234")); assertTrue(cache.contains("1234")); session = cache.delete("1234"); @@ -544,14 +597,14 @@ public class DefaultSessionCacheTest SessionData data = store.newSessionData("1234", now - 20, now - 10, now - 20, TimeUnit.MINUTES.toMillis(10)); data.setExpiry(now + TimeUnit.DAYS.toMillis(1)); Session session = cache.newSession(data); - cache.put("1234", session); + cache.add("1234", session); + cache.release("1234", session); assertTrue(cache.exists("1234")); result = cache.checkExpiration(Collections.singleton("1234")); assertTrue(result.isEmpty()); //test candidates that are in the cache AND expired data.setExpiry(1); - cache.put("1234", session); result = cache.checkExpiration(Collections.singleton("1234")); assertEquals(1, result.size()); assertEquals("1234", result.iterator().next()); @@ -597,7 +650,8 @@ public class DefaultSessionCacheTest //ie nothing happens to the session //test session that is resident but not valid - cache.put("1234", session); + cache.add("1234", session); + cache.release("1234", session); //this will write session session._state = Session.State.INVALID; cache.checkInactiveSession(session); assertTrue(store.exists("1234")); @@ -627,7 +681,7 @@ public class DefaultSessionCacheTest SessionData data2 = store.newSessionData("567", now, now - TimeUnit.SECONDS.toMillis(30), now - TimeUnit.SECONDS.toMillis(40), TimeUnit.MINUTES.toMillis(10)); data2.setExpiry(now + TimeUnit.DAYS.toMillis(1));//not expired Session session2 = cache.newSession(data2); - cache.put("567", session2);//ensure session is in cache + cache.add("567", session2);//ensure session is in cache cache.setEvictionPolicy(SessionCache.EVICT_ON_SESSION_EXIT); session2.access(System.currentTimeMillis());//simulate 1 request in session assertTrue(cache.contains("567")); @@ -636,7 +690,7 @@ public class DefaultSessionCacheTest //test EVICT_ON_SESSION_EXIT - requests not active //this should not affect the session because this is an idle test only - session2.complete(); //simulate last request leaving session + session2.complete(); //NOTE:don't call cache.release as this will remove the session cache.checkInactiveSession(session2); assertTrue(cache.contains("567")); } @@ -665,10 +719,13 @@ public class DefaultSessionCacheTest SessionData data = store.newSessionData("1234", now - 20, now - 10, now - 20, TimeUnit.MINUTES.toMillis(10)); data.setExpiry(now + TimeUnit.DAYS.toMillis(1)); Session session = cache.newSession(data); - cache.put("1234", session); //make it resident + cache.add("1234", session); //make it resident assertTrue(cache.contains("1234")); long accessed = now - TimeUnit.SECONDS.toMillis(30); //make it idle data.setAccessed(accessed); + cache.release("1234", session); + assertTrue(cache.contains("1234")); + assertTrue(session.isResident()); cache.checkInactiveSession(session); assertFalse(cache.contains("1234")); assertFalse(session.isResident()); diff --git a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/DirtyAttributeTest.java b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/DirtyAttributeTest.java index 6dfc3f0686c..640c37801bd 100644 --- a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/DirtyAttributeTest.java +++ b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/DirtyAttributeTest.java @@ -106,14 +106,19 @@ public class DirtyAttributeTest try { // Perform a request to create a session + CountDownLatch latch = new CountDownLatch(1); + scopeListener.setExitSynchronizer(latch); ContentResponse response = client.GET("http://localhost:" + port + "/mod/test?action=create"); assertEquals(HttpServletResponse.SC_OK, response.getStatus()); String sessionCookie = response.getHeaders().get("Set-Cookie"); assertTrue(sessionCookie != null); + + //ensure request finished + latch.await(5, TimeUnit.SECONDS); //do another request to change the session attribute - CountDownLatch latch = new CountDownLatch(1); + latch = new CountDownLatch(1); scopeListener.setExitSynchronizer(latch); Request request = client.newRequest("http://localhost:" + port + "/mod/test?action=setA"); response = request.send(); @@ -126,6 +131,8 @@ public class DirtyAttributeTest A_VALUE.assertActivatesEquals(1); A_VALUE.assertBindsEquals(1); A_VALUE.assertUnbindsEquals(0); + + //do another request using the cookie to try changing the session attribute to the same value again latch = new CountDownLatch(1); diff --git a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/IdleSessionTest.java b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/IdleSessionTest.java index 7754d049fb3..a11efa8436a 100644 --- a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/IdleSessionTest.java +++ b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/IdleSessionTest.java @@ -19,6 +19,7 @@ package org.eclipse.jetty.server.session; import java.io.IOException; +import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @@ -75,6 +76,8 @@ public class IdleSessionTest _server1 = new TestServer(0, inactivePeriod, scavengePeriod, cacheFactory, storeFactory); ServletHolder holder = new ServletHolder(_servlet); ServletContextHandler contextHandler = _server1.addContext(contextPath); + TestContextScopeListener scopeListener = new TestContextScopeListener(); + contextHandler.addEventListener(scopeListener); contextHandler.addServlet(holder, servletMapping); _server1.start(); int port1 = _server1.getPort(); @@ -86,24 +89,34 @@ public class IdleSessionTest String url = "http://localhost:" + port1 + contextPath + servletMapping; //make a request to set up a session on the server + CountDownLatch synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); ContentResponse response = client.GET(url + "?action=init"); assertEquals(HttpServletResponse.SC_OK, response.getStatus()); String sessionCookie = response.getHeaders().get("Set-Cookie"); assertTrue(sessionCookie != null); + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); //and wait until the session should be passivated out pause(evictionSec * 2); - + //check that the session has been idled String id = TestServer.extractSessionId(sessionCookie); assertFalse(contextHandler.getSessionHandler().getSessionCache().contains(id)); assertTrue(contextHandler.getSessionHandler().getSessionCache().getSessionDataStore().exists(id)); //make another request to reactivate the session + synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); Request request = client.newRequest(url + "?action=test"); ContentResponse response2 = request.send(); assertEquals(HttpServletResponse.SC_OK, response2.getStatus()); - + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + //check session reactivated assertTrue(contextHandler.getSessionHandler().getSessionCache().contains(id)); @@ -119,17 +132,27 @@ public class IdleSessionTest ((TestSessionDataStore)contextHandler.getSessionHandler().getSessionCache().getSessionDataStore())._map.clear(); //make a request + synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); request = client.newRequest(url + "?action=testfail"); response2 = request.send(); assertEquals(HttpServletResponse.SC_OK, response2.getStatus()); + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + //Test trying to reactivate an expired session (ie before the scavenger can get to it) //make a request to set up a session on the server + synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); response = client.GET(url + "?action=init"); assertEquals(HttpServletResponse.SC_OK, response.getStatus()); sessionCookie = response.getHeaders().get("Set-Cookie"); assertTrue(sessionCookie != null); id = TestServer.extractSessionId(sessionCookie); + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); //and wait until the session should be idled out pause(evictionSec * 2); @@ -146,9 +169,14 @@ public class IdleSessionTest pause(inactivePeriod + (3 * scavengePeriod)); //make another request to reactivate the session + synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); request = client.newRequest(url + "?action=testfail"); response2 = request.send(); assertEquals(HttpServletResponse.SC_OK, response2.getStatus()); + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); assertFalse(contextHandler.getSessionHandler().getSessionCache().contains(id)); assertFalse(contextHandler.getSessionHandler().getSessionCache().getSessionDataStore().exists(id)); @@ -174,6 +202,8 @@ public class IdleSessionTest _server1 = new TestServer(0, inactivePeriod, scavengePeriod, cacheFactory, storeFactory); ServletHolder holder = new ServletHolder(_servlet); ServletContextHandler contextHandler = _server1.addContext(contextPath); + TestContextScopeListener scopeListener = new TestContextScopeListener(); + contextHandler.addEventListener(scopeListener); contextHandler.addServlet(holder, servletMapping); _server1.start(); int port1 = _server1.getPort(); @@ -185,10 +215,15 @@ public class IdleSessionTest String url = "http://localhost:" + port1 + contextPath + servletMapping; //make a request to set up a session on the server + CountDownLatch synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); ContentResponse response = client.GET(url + "?action=init"); assertEquals(HttpServletResponse.SC_OK, response.getStatus()); String sessionCookie = response.getHeaders().get("Set-Cookie"); assertTrue(sessionCookie != null); + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); //the session should never be cached String id = TestServer.extractSessionId(sessionCookie); @@ -196,10 +231,15 @@ public class IdleSessionTest assertTrue(contextHandler.getSessionHandler().getSessionCache().getSessionDataStore().exists(id)); //make another request to reactivate the session + synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); Request request = client.newRequest(url + "?action=test"); ContentResponse response2 = request.send(); assertEquals(HttpServletResponse.SC_OK, response2.getStatus()); - + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + //check session still not in the cache assertFalse(contextHandler.getSessionHandler().getSessionCache().contains(id)); assertTrue(contextHandler.getSessionHandler().getSessionCache().getSessionDataStore().exists(id)); @@ -209,17 +249,28 @@ public class IdleSessionTest ((TestSessionDataStore)contextHandler.getSessionHandler().getSessionCache().getSessionDataStore())._map.clear(); //make a request + synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); request = client.newRequest(url + "?action=testfail"); response2 = request.send(); assertEquals(HttpServletResponse.SC_OK, response2.getStatus()); + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + //Test trying to reactivate an expired session (ie before the scavenger can get to it) //make a request to set up a session on the server + synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); response = client.GET(url + "?action=init"); assertEquals(HttpServletResponse.SC_OK, response.getStatus()); sessionCookie = response.getHeaders().get("Set-Cookie"); assertTrue(sessionCookie != null); id = TestServer.extractSessionId(sessionCookie); + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + //stop the scavenger if (_server1.getHouseKeeper() != null) @@ -233,10 +284,15 @@ public class IdleSessionTest pause(inactivePeriod + (3 * scavengePeriod)); //make another request to reactivate the session + synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); request = client.newRequest(url + "?action=testfail"); response2 = request.send(); assertEquals(HttpServletResponse.SC_OK, response2.getStatus()); - + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + assertFalse(contextHandler.getSessionHandler().getSessionCache().contains(id)); assertFalse(contextHandler.getSessionHandler().getSessionCache().getSessionDataStore().exists(id)); } diff --git a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/NullSessionCacheTest.java b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/NullSessionCacheTest.java index 59b7ee41240..6e8aac37e02 100644 --- a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/NullSessionCacheTest.java +++ b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/NullSessionCacheTest.java @@ -55,15 +55,18 @@ public class NullSessionCacheTest SessionData data = store.newSessionData("1234", now - 20, now - 10, now - 20, TimeUnit.MINUTES.toMillis(10)); data.setExpiry(now + TimeUnit.DAYS.toMillis(1)); Session session = cache.newSession(null, data); //mimic a request making a session - session.complete(); //mimic request leaving session - cache.put("1234", session); //null cache doesn't store the session - assertFalse(cache.contains("1234")); + cache.add("1234", session); + assertFalse(cache.contains("1234"));//null cache doesn't actually store the session + + //mimic releasing the session after the request is finished + cache.release("1234", session); assertTrue(store.exists("1234")); + assertFalse(cache.contains("1234")); + //simulate a new request using the previously created session session = cache.get("1234"); //get the session again session.access(now); //simulate a request - session.complete(); //simulate a request leaving - cache.put("1234", session); //finish with the session + cache.release("1234", session); //finish with the session assertFalse(session.isResident()); } diff --git a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SaveOptimizeTest.java b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SaveOptimizeTest.java index 856faed6685..a036bd0bd5c 100644 --- a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SaveOptimizeTest.java +++ b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SaveOptimizeTest.java @@ -124,6 +124,8 @@ public class SaveOptimizeTest _servlet = new TestServlet(); ServletHolder holder = new ServletHolder(_servlet); ServletContextHandler contextHandler = _server1.addContext(contextPath); + TestContextScopeListener scopeListener = new TestContextScopeListener(); + contextHandler.addEventListener(scopeListener); contextHandler.addServlet(holder, servletMapping); _servlet.setStore(contextHandler.getSessionHandler().getSessionCache().getSessionDataStore()); _server1.start(); @@ -138,11 +140,16 @@ public class SaveOptimizeTest String url = "http://localhost:" + port1 + contextPath + servletMapping + "?action=create&check=true"; //make a request to set up a session on the server + CountDownLatch synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); ContentResponse response = client.GET(url); assertEquals(HttpServletResponse.SC_OK, response.getStatus()); String sessionCookie = response.getHeaders().get("Set-Cookie"); assertNotNull(sessionCookie); String sessionId = TestServer.extractSessionId(sessionCookie); + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); SessionData data = contextHandler.getSessionHandler().getSessionCache().getSessionDataStore().load(sessionId); assertNotNull(data); @@ -151,9 +158,14 @@ public class SaveOptimizeTest int initialNumSaves = getNumSaves(); for (int i = 0; i < 5; i++) { - // Perform a request to contextB with the same session cookie + // Perform a request with the same session cookie + synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); client.newRequest("http://localhost:" + port1 + contextPath + servletMapping + "?action=noop").send(); + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + //check session is unchanged SessionData d = contextHandler.getSessionHandler().getSessionCache().getSessionDataStore().load(sessionId); assertNotNull(d); @@ -195,6 +207,8 @@ public class SaveOptimizeTest _servlet = new TestServlet(); ServletHolder holder = new ServletHolder(_servlet); ServletContextHandler contextHandler = _server1.addContext(contextPath); + TestContextScopeListener scopeListener = new TestContextScopeListener(); + contextHandler.addEventListener(scopeListener); contextHandler.addServlet(holder, servletMapping); _servlet.setStore(contextHandler.getSessionHandler().getSessionCache().getSessionDataStore()); _server1.start(); @@ -209,19 +223,29 @@ public class SaveOptimizeTest String url = "http://localhost:" + port1 + contextPath + servletMapping + "?action=create&check=true"; //make a request to set up a session on the server + CountDownLatch synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); ContentResponse response = client.GET(url); assertEquals(HttpServletResponse.SC_OK, response.getStatus()); String sessionCookie = response.getHeaders().get("Set-Cookie"); assertNotNull(sessionCookie); String sessionId = TestServer.extractSessionId(sessionCookie); + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + SessionData data = contextHandler.getSessionHandler().getSessionCache().getSessionDataStore().load(sessionId); assertNotNull(data); // Perform a request to do nothing with the same session cookie int numSavesBefore = getNumSaves(); + synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); client.newRequest("http://localhost:" + port1 + contextPath + servletMapping + "?action=noop").send(); - + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + //check session not saved SessionData d = contextHandler.getSessionHandler().getSessionCache().getSessionDataStore().load(sessionId); assertNotNull(d); @@ -229,8 +253,13 @@ public class SaveOptimizeTest // Perform a request to mutate the session numSavesBefore = getNumSaves(); + synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); client.newRequest("http://localhost:" + port1 + contextPath + servletMapping + "?action=mutate").send(); + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + //check session is saved d = contextHandler.getSessionHandler().getSessionCache().getSessionDataStore().load(sessionId); assertNotNull(d); @@ -268,6 +297,8 @@ public class SaveOptimizeTest _servlet = new TestServlet(); ServletHolder holder = new ServletHolder(_servlet); ServletContextHandler contextHandler = _server1.addContext(contextPath); + TestContextScopeListener scopeListener = new TestContextScopeListener(); + contextHandler.addEventListener(scopeListener); contextHandler.addServlet(holder, servletMapping); _servlet.setStore(contextHandler.getSessionHandler().getSessionCache().getSessionDataStore()); _server1.start(); @@ -282,12 +313,17 @@ public class SaveOptimizeTest String url = "http://localhost:" + port1 + contextPath + servletMapping + "?action=create&check=true"; //make a request to set up a session on the server + CountDownLatch synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); ContentResponse response = client.GET(url); assertEquals(HttpServletResponse.SC_OK, response.getStatus()); String sessionCookie = response.getHeaders().get("Set-Cookie"); assertNotNull(sessionCookie); String sessionId = TestServer.extractSessionId(sessionCookie); + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + SessionData data = contextHandler.getSessionHandler().getSessionCache().getSessionDataStore().load(sessionId); assertNotNull(data); long lastSaved = data.getLastSaved(); @@ -295,8 +331,13 @@ public class SaveOptimizeTest //make another request, session should not change // Perform a request to do nothing with the same session cookie + synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); client.newRequest("http://localhost:" + port1 + contextPath + servletMapping + "?action=noop").send(); - + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + //check session not saved SessionData d = contextHandler.getSessionHandler().getSessionCache().getSessionDataStore().load(sessionId); assertNotNull(d); @@ -306,8 +347,13 @@ public class SaveOptimizeTest Thread.sleep(1000 * savePeriod); // Perform a request to do nothing with the same session cookie + synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); client.newRequest("http://localhost:" + port1 + contextPath + servletMapping + "?action=noop").send(); - + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + //check session is saved d = contextHandler.getSessionHandler().getSessionCache().getSessionDataStore().load(sessionId); assertNotNull(d); @@ -346,6 +392,8 @@ public class SaveOptimizeTest _servlet = new TestServlet(); ServletHolder holder = new ServletHolder(_servlet); ServletContextHandler contextHandler = _server1.addContext(contextPath); + TestContextScopeListener scopeListener = new TestContextScopeListener(); + contextHandler.addEventListener(scopeListener); contextHandler.addServlet(holder, servletMapping); _servlet.setStore(contextHandler.getSessionHandler().getSessionCache().getSessionDataStore()); _server1.start(); @@ -360,11 +408,16 @@ public class SaveOptimizeTest String url = "http://localhost:" + port1 + contextPath + servletMapping + "?action=create&check=true"; //make a request to set up a session on the server + CountDownLatch synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); ContentResponse response = client.GET(url); assertEquals(HttpServletResponse.SC_OK, response.getStatus()); String sessionCookie = response.getHeaders().get("Set-Cookie"); assertNotNull(sessionCookie); String sessionId = TestServer.extractSessionId(sessionCookie); + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); SessionData data = contextHandler.getSessionHandler().getSessionCache().getSessionDataStore().load(sessionId); assertNotNull(data); @@ -372,8 +425,13 @@ public class SaveOptimizeTest assertTrue(lastSaved > 0); //check session created was saved // Perform a request to do nothing with the same session cookie, check the session object is different + synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); client.newRequest("http://localhost:" + port1 + contextPath + servletMapping + "?action=noop&check=diff").send(); + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + //check session not saved SessionData d = contextHandler.getSessionHandler().getSessionCache().getSessionDataStore().load(sessionId); assertNotNull(d); diff --git a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SessionRenewTest.java b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SessionRenewTest.java index bd28af27aa1..2329b49f0a1 100644 --- a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SessionRenewTest.java +++ b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SessionRenewTest.java @@ -19,6 +19,10 @@ package org.eclipse.jetty.server.session; import java.io.IOException; +import java.net.HttpCookie; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; @@ -60,7 +64,19 @@ public class SessionRenewTest //make the server with a NullSessionCache _server = new TestServer(0, -1, -1, cacheFactory, storeFactory); - doTest(new RenewalVerifier()); + doTest(new RenewalVerifier() + { + + @Override + public void verify(WebAppContext context, String oldSessionId, String newSessionId) throws Exception + { + //null cache means it should contain neither session + assertFalse(context.getSessionHandler().getSessionCache().contains(newSessionId)); + assertFalse(context.getSessionHandler().getSessionCache().contains(oldSessionId)); + super.verify(context, oldSessionId, newSessionId); + } + + }); } /** @@ -90,6 +106,73 @@ public class SessionRenewTest }); } + @Test + public void testSessionRenewalMultiContext() throws Exception + { + DefaultSessionCacheFactory cacheFactory = new DefaultSessionCacheFactory(); + cacheFactory.setEvictionPolicy(SessionCache.NEVER_EVICT); + SessionDataStoreFactory storeFactory = new TestSessionDataStoreFactory(); + + _server = new TestServer(0, -1, -1, cacheFactory, storeFactory); + + String contextPathA = ""; + String servletMapping = "/server"; + WebAppContext contextA = _server.addWebAppContext(".", contextPathA); + TestContextScopeListener scopeListener = new TestContextScopeListener(); + contextA.addEventListener(scopeListener); + contextA.setParentLoaderPriority(true); + contextA.addServlet(TestServlet.class, servletMapping); + + WebAppContext contextB = _server.addWebAppContext(".", "/B"); + contextB.setParentLoaderPriority(true); + + HttpClient client = new HttpClient(); + try + { + _server.start(); + int port = _server.getPort(); + + client.start(); + + //pre-create session data for both contextA and contextB + long now = System.currentTimeMillis(); + SessionData dataA = contextA.getSessionHandler().getSessionCache().getSessionDataStore().newSessionData("1234", now - 20, now - 10, now - 20, TimeUnit.MINUTES.toMillis(10)); + contextA.getSessionHandler().getSessionCache().getSessionDataStore().store("1234", dataA); + SessionData dataB = contextB.getSessionHandler().getSessionCache().getSessionDataStore().newSessionData("1234", now - 20, now - 10, now - 20, TimeUnit.MINUTES.toMillis(10)); + contextB.getSessionHandler().getSessionCache().getSessionDataStore().store("1234", dataB); + + //make a request to change the sessionid + CountDownLatch synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); + Request request = client.newRequest("http://localhost:" + port + contextPathA + servletMapping + "?action=renew"); + request.cookie(new HttpCookie(SessionHandler.__DefaultSessionCookie, "1234")); + ContentResponse renewResponse = request.send(); + assertEquals(HttpServletResponse.SC_OK, renewResponse.getStatus()); + String newSessionCookie = renewResponse.getHeaders().get("Set-Cookie"); + assertTrue(newSessionCookie != null); + String updatedId = TestServer.extractSessionId(newSessionCookie); + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + + //session ids should be updated on all contexts + contextA.getSessionHandler().getSessionCache().contains(updatedId); + contextB.getSessionHandler().getSessionCache().contains(updatedId); + + Session sessiona = ((AbstractSessionCache)contextA.getSessionHandler().getSessionCache()).getAndEnter(updatedId, false); + Session sessionb = ((AbstractSessionCache)contextB.getSessionHandler().getSessionCache()).getAndEnter(updatedId, false); + + //sessions should nor have any usecounts + assertEquals(0, sessiona.getRequests()); + assertEquals(0, sessionb.getRequests()); + + } + finally + { + client.stop(); + _server.stop(); + } + } /** * Perform the test by making a request to create a session * then another request that will renew the session id. @@ -101,6 +184,8 @@ public class SessionRenewTest String contextPath = ""; String servletMapping = "/server"; WebAppContext context = _server.addWebAppContext(".", contextPath); + TestContextScopeListener scopeListener = new TestContextScopeListener(); + context.addEventListener(scopeListener); context.setParentLoaderPriority(true); context.addServlet(TestServlet.class, servletMapping); TestHttpSessionIdListener testListener = new TestHttpSessionIdListener(); @@ -115,18 +200,28 @@ public class SessionRenewTest client.start(); //make a request to create a session + CountDownLatch synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); ContentResponse response = client.GET("http://localhost:" + port + contextPath + servletMapping + "?action=create"); assertEquals(HttpServletResponse.SC_OK, response.getStatus()); + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + String sessionCookie = response.getHeaders().get("Set-Cookie"); assertTrue(sessionCookie != null); assertFalse(testListener.isCalled()); //make a request to change the sessionid + synchronizer = new CountDownLatch(1); + scopeListener.setExitSynchronizer(synchronizer); Request request = client.newRequest("http://localhost:" + port + contextPath + servletMapping + "?action=renew"); ContentResponse renewResponse = request.send(); - assertEquals(HttpServletResponse.SC_OK, renewResponse.getStatus()); + + //ensure request has finished being handled + synchronizer.await(5, TimeUnit.SECONDS); + String renewSessionCookie = renewResponse.getHeaders().get("Set-Cookie"); assertNotNull(renewSessionCookie); assertNotSame(sessionCookie, renewSessionCookie); @@ -175,6 +270,16 @@ public class SessionRenewTest } } + public static class TestServletB extends HttpServlet + { + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException + { + //Ensure a session exists + } + + } public static class TestServlet extends HttpServlet { private static final long serialVersionUID = 1L; @@ -194,7 +299,8 @@ public class SessionRenewTest assertTrue(beforeSession != null); String beforeSessionId = beforeSession.getId(); - ((Session)beforeSession).renewId(request); + //((Session)beforeSession).renewId(request); + request.changeSessionId(); HttpSession afterSession = request.getSession(false); @@ -210,10 +316,6 @@ public class SessionRenewTest assertTrue(sessionIdManager.isIdInUse(afterSessionId)); //new session id should be in use assertFalse(sessionIdManager.isIdInUse(beforeSessionId)); - HttpSession session = sessionManager.getSession(afterSessionId); - assertNotNull(session); - session = sessionManager.getSession(beforeSessionId); - assertNull(session); if (((Session)afterSession).isIdChanged()) ((org.eclipse.jetty.server.Response)response).replaceCookie(sessionManager.getSessionCookie(afterSession, request.getContextPath(), request.isSecure())); From d6bd6e6e32cdb1c57f04a2c23915ba7ac0af1b11 Mon Sep 17 00:00:00 2001 From: Chris Walker Date: Thu, 15 Aug 2019 10:55:12 -0400 Subject: [PATCH 6/7] Updated security reports for HTTP/2 fix in #2722 --- .../asciidoc/reference/troubleshooting/security-reports.adoc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/jetty-documentation/src/main/asciidoc/reference/troubleshooting/security-reports.adoc b/jetty-documentation/src/main/asciidoc/reference/troubleshooting/security-reports.adoc index 34eed7ee5e7..598ee199f19 100644 --- a/jetty-documentation/src/main/asciidoc/reference/troubleshooting/security-reports.adoc +++ b/jetty-documentation/src/main/asciidoc/reference/troubleshooting/security-reports.adoc @@ -28,6 +28,9 @@ If you would like to report a security issue please follow these link:#security- |======================================================================= |yyyy/mm/dd |ID |Exploitable |Severity |Affects |Fixed Version |Comment +|2019/08/13 |CVE-2019-9515 |Med |Med |< = 9.4.20 |9.4.21 +|https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9515[Some HTTP/2 implementations are vulnerable to a settings flood, potentially leading to a denial of service when an attacker sent a stream of SETTINGS frames to the peer.] + |2019/04/11 |CVE-2019-10247 |Med |Med |< = 9.4.16 |9.2.28, 9.3.27, 9.4.17 |https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-10247[If no webapp was mounted to the root namespace and a 404 was encountered, an HTML page would be generated displaying the fully qualified base resource location for each context.] From f14abdd600b66c6258d02f82b309762ac575e2a2 Mon Sep 17 00:00:00 2001 From: Bogdan Arabadzhi Date: Fri, 16 Aug 2019 16:47:54 +0200 Subject: [PATCH 7/7] Add WebAssembly MIME type support Signed-off-by: Bogdan Arabadzhi --- .../src/main/resources/org/eclipse/jetty/http/mime.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/jetty-http/src/main/resources/org/eclipse/jetty/http/mime.properties b/jetty-http/src/main/resources/org/eclipse/jetty/http/mime.properties index b4ad431489b..fe10cfdba3d 100644 --- a/jetty-http/src/main/resources/org/eclipse/jetty/http/mime.properties +++ b/jetty-http/src/main/resources/org/eclipse/jetty/http/mime.properties @@ -167,6 +167,7 @@ ustar=application/x-ustar vcd=application/x-cdlink vrml=model/vrml vxml=application/voicexml+xml +wasm=application/wasm wav=audio/x-wav wbmp=image/vnd.wap.wbmp wml=text/vnd.wap.wml