From a6178426956b56b24f1fdeb496a40553d2582b64 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 5 Jan 2018 10:11:08 -0600 Subject: [PATCH 001/134] Updating to version 9.2.24.v20180105 --- VERSION.txt | 3 ++- aggregates/jetty-all/pom.xml | 2 +- apache-jsp/pom.xml | 2 +- apache-jstl/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/jetty-alpn-server/pom.xml | 2 +- jetty-alpn/pom.xml | 2 +- jetty-annotations/pom.xml | 2 +- jetty-ant/pom.xml | 2 +- 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-fcgi/fcgi-client/pom.xml | 2 +- jetty-fcgi/fcgi-server/pom.xml | 2 +- jetty-fcgi/pom.xml | 2 +- jetty-http-spi/pom.xml | 2 +- jetty-http/pom.xml | 2 +- jetty-io/pom.xml | 2 +- jetty-jaas/pom.xml | 2 +- jetty-jaspi/pom.xml | 2 +- jetty-jmx/pom.xml | 2 +- jetty-jndi/pom.xml | 2 +- jetty-jsp/pom.xml | 2 +- jetty-jspc-maven-plugin/pom.xml | 2 +- jetty-maven-plugin/pom.xml | 2 +- jetty-monitor/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-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-spdy/pom.xml | 2 +- jetty-spdy/spdy-alpn-tests/pom.xml | 2 +- jetty-spdy/spdy-client/pom.xml | 2 +- jetty-spdy/spdy-core/pom.xml | 2 +- jetty-spdy/spdy-example-webapp/pom.xml | 2 +- jetty-spdy/spdy-http-client-transport/pom.xml | 2 +- jetty-spdy/spdy-http-common/pom.xml | 2 +- jetty-spdy/spdy-http-server/pom.xml | 2 +- jetty-spdy/spdy-server/pom.xml | 2 +- jetty-spring/pom.xml | 2 +- jetty-start/pom.xml | 2 +- jetty-util-ajax/pom.xml | 2 +- jetty-util/pom.xml | 2 +- jetty-webapp/pom.xml | 2 +- jetty-websocket/javax-websocket-client-impl/pom.xml | 2 +- jetty-websocket/javax-websocket-server-impl/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-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 +- tests/test-sessions/test-hash-sessions/pom.xml | 2 +- tests/test-sessions/test-jdbc-sessions/pom.xml | 2 +- tests/test-sessions/test-mongodb-sessions/pom.xml | 2 +- tests/test-sessions/test-sessions-common/pom.xml | 2 +- tests/test-webapps/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 +- tests/test-webapps/test-mock-resources/pom.xml | 2 +- tests/test-webapps/test-proxy-webapp/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/pom.xml | 2 +- .../test-servlet-spec/test-container-initializer/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml | 2 +- tests/test-webapps/test-webapp-rfc2616/pom.xml | 2 +- 100 files changed, 101 insertions(+), 100 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index a28c6959955..4434b41c52e 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,4 +1,5 @@ -jetty-9.2.24-SNAPSHOT +jetty-9.2.24.v20180105 - 05 January 2018 + + 2065 Backport #347 to Jetty 9.2.x jetty-9.2.23.v20171218 - 18 December 2017 + 1556 Remove a timing channel in Password matching diff --git a/aggregates/jetty-all/pom.xml b/aggregates/jetty-all/pom.xml index 77d1ee6f4b9..6b4b6720eba 100644 --- a/aggregates/jetty-all/pom.xml +++ b/aggregates/jetty-all/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 ../../pom.xml 4.0.0 diff --git a/apache-jsp/pom.xml b/apache-jsp/pom.xml index e7ba95c1739..f04a4b72d24 100644 --- a/apache-jsp/pom.xml +++ b/apache-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 apache-jsp diff --git a/apache-jstl/pom.xml b/apache-jstl/pom.xml index cac354b3dc8..a86111e40ee 100644 --- a/apache-jstl/pom.xml +++ b/apache-jstl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 apache-jstl diff --git a/examples/async-rest/async-rest-jar/pom.xml b/examples/async-rest/async-rest-jar/pom.xml index dea34a26e42..a1afd100cf0 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.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 org.eclipse.jetty.example-async-rest diff --git a/examples/async-rest/async-rest-webapp/pom.xml b/examples/async-rest/async-rest-webapp/pom.xml index 58157cc46c7..f7ddad683ee 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.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 org.eclipse.jetty.example-async-rest diff --git a/examples/async-rest/pom.xml b/examples/async-rest/pom.xml index 7dd5ed91938..9c4c728ed8a 100644 --- a/examples/async-rest/pom.xml +++ b/examples/async-rest/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 ../pom.xml 4.0.0 diff --git a/examples/embedded/pom.xml b/examples/embedded/pom.xml index d48c5ce708f..470c5cb73bb 100644 --- a/examples/embedded/pom.xml +++ b/examples/embedded/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 ../pom.xml 4.0.0 diff --git a/examples/pom.xml b/examples/pom.xml index 901a3046b19..3a38d37da99 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 ../pom.xml org.eclipse.jetty.examples diff --git a/jetty-alpn/jetty-alpn-client/pom.xml b/jetty-alpn/jetty-alpn-client/pom.xml index 45478c8689e..1394d7b4d4f 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.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-alpn-client diff --git a/jetty-alpn/jetty-alpn-server/pom.xml b/jetty-alpn/jetty-alpn-server/pom.xml index 9aaa9aa977c..f6712586ee4 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.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-alpn-server diff --git a/jetty-alpn/pom.xml b/jetty-alpn/pom.xml index 5073b2ff003..25623a068fa 100644 --- a/jetty-alpn/pom.xml +++ b/jetty-alpn/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-alpn-parent diff --git a/jetty-annotations/pom.xml b/jetty-annotations/pom.xml index a78b8db4a49..b1d1550e2a3 100644 --- a/jetty-annotations/pom.xml +++ b/jetty-annotations/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-annotations diff --git a/jetty-ant/pom.xml b/jetty-ant/pom.xml index 7639ec4e62b..e02bfe61bee 100644 --- a/jetty-ant/pom.xml +++ b/jetty-ant/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-ant diff --git a/jetty-cdi/pom.xml b/jetty-cdi/pom.xml index 5a9a47076c7..6e5a03d88e4 100644 --- a/jetty-cdi/pom.xml +++ b/jetty-cdi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-cdi diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml index 560248039f1..a6308c013c1 100644 --- a/jetty-client/pom.xml +++ b/jetty-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-continuation/pom.xml b/jetty-continuation/pom.xml index a3d25c5a4a1..6f589b0352e 100644 --- a/jetty-continuation/pom.xml +++ b/jetty-continuation/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-continuation diff --git a/jetty-deploy/pom.xml b/jetty-deploy/pom.xml index 33bd40f54ec..2815f48be53 100644 --- a/jetty-deploy/pom.xml +++ b/jetty-deploy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-deploy diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml index 4ed5abb763c..c67abc24556 100644 --- a/jetty-distribution/pom.xml +++ b/jetty-distribution/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 jetty-distribution Jetty :: Distribution Assemblies diff --git a/jetty-fcgi/fcgi-client/pom.xml b/jetty-fcgi/fcgi-client/pom.xml index 7488dec3091..4a9cc8caa10 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.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-fcgi/fcgi-server/pom.xml b/jetty-fcgi/fcgi-server/pom.xml index cd7b1d30ed2..c229415b7db 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.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-fcgi/pom.xml b/jetty-fcgi/pom.xml index db5dcafa5f9..992360aa91e 100644 --- a/jetty-fcgi/pom.xml +++ b/jetty-fcgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-http-spi/pom.xml b/jetty-http-spi/pom.xml index 62ba1afba61..0a538fb2c06 100644 --- a/jetty-http-spi/pom.xml +++ b/jetty-http-spi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-http-spi diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml index a8577870ee7..03f66751e10 100644 --- a/jetty-http/pom.xml +++ b/jetty-http/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-http diff --git a/jetty-io/pom.xml b/jetty-io/pom.xml index d12c92b040b..71a439d89a0 100644 --- a/jetty-io/pom.xml +++ b/jetty-io/pom.xml @@ -2,7 +2,7 @@ jetty-project org.eclipse.jetty - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-io diff --git a/jetty-jaas/pom.xml b/jetty-jaas/pom.xml index 74956c85a0a..eb1da66fcca 100644 --- a/jetty-jaas/pom.xml +++ b/jetty-jaas/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-jaas diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml index 2388f04d27e..f21a5c5d249 100644 --- a/jetty-jaspi/pom.xml +++ b/jetty-jaspi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-jaspi diff --git a/jetty-jmx/pom.xml b/jetty-jmx/pom.xml index 7794451c5e2..614547bc522 100644 --- a/jetty-jmx/pom.xml +++ b/jetty-jmx/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-jmx diff --git a/jetty-jndi/pom.xml b/jetty-jndi/pom.xml index 0605a7fe802..cd7df2fbdd9 100644 --- a/jetty-jndi/pom.xml +++ b/jetty-jndi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-jndi diff --git a/jetty-jsp/pom.xml b/jetty-jsp/pom.xml index cfd39211fa5..0fe721a1222 100644 --- a/jetty-jsp/pom.xml +++ b/jetty-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-jsp diff --git a/jetty-jspc-maven-plugin/pom.xml b/jetty-jspc-maven-plugin/pom.xml index 376b0542520..a095a0a1d8b 100644 --- a/jetty-jspc-maven-plugin/pom.xml +++ b/jetty-jspc-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-jspc-maven-plugin diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml index 5f7c3821b4f..cafa8c1b72c 100644 --- a/jetty-maven-plugin/pom.xml +++ b/jetty-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-maven-plugin diff --git a/jetty-monitor/pom.xml b/jetty-monitor/pom.xml index 64175f3c38b..4d05a0a3e9d 100644 --- a/jetty-monitor/pom.xml +++ b/jetty-monitor/pom.xml @@ -19,7 +19,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-monitor diff --git a/jetty-nosql/pom.xml b/jetty-nosql/pom.xml index 4748848de9d..51610c1cca2 100644 --- a/jetty-nosql/pom.xml +++ b/jetty-nosql/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-nosql diff --git a/jetty-osgi/jetty-osgi-alpn/pom.xml b/jetty-osgi/jetty-osgi-alpn/pom.xml index 7474c7c0c01..3953a2202e4 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.2.24-SNAPSHOT + 9.2.24.v20180105 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 afea228cdf8..7bc1a167427 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.2.24-SNAPSHOT + 9.2.24.v20180105 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 535db917217..c9f093dac8c 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.2.24-SNAPSHOT + 9.2.24.v20180105 ../pom.xml 4.0.0 diff --git a/jetty-osgi/jetty-osgi-boot/pom.xml b/jetty-osgi/jetty-osgi-boot/pom.xml index 8f5389bb17b..71b8e378fb9 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.2.24-SNAPSHOT + 9.2.24.v20180105 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 88e490b0fe3..45fc5b5adf1 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.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-httpservice diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml index 8f73b4b2517..404f46c0e5c 100644 --- a/jetty-osgi/pom.xml +++ b/jetty-osgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 org.eclipse.jetty.osgi jetty-osgi-project diff --git a/jetty-osgi/test-jetty-osgi-context/pom.xml b/jetty-osgi/test-jetty-osgi-context/pom.xml index 16fec16969e..3e9b7736453 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.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 test-jetty-osgi-context diff --git a/jetty-osgi/test-jetty-osgi-webapp/pom.xml b/jetty-osgi/test-jetty-osgi-webapp/pom.xml index 51ddcdc2a45..0c771984441 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.2.24-SNAPSHOT + 9.2.24.v20180105 ../pom.xml 4.0.0 diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml index fef79f8a2f9..120622e7004 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.2.24-SNAPSHOT + 9.2.24.v20180105 ../pom.xml 4.0.0 diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml index 6edaa8ede35..44d436cd827 100644 --- a/jetty-plus/pom.xml +++ b/jetty-plus/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-plus diff --git a/jetty-proxy/pom.xml b/jetty-proxy/pom.xml index b9d8b700d99..c4afae712fb 100644 --- a/jetty-proxy/pom.xml +++ b/jetty-proxy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-proxy diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml index 3683b934c3e..7266765a1ae 100644 --- a/jetty-quickstart/pom.xml +++ b/jetty-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 org.eclipse.jetty diff --git a/jetty-rewrite/pom.xml b/jetty-rewrite/pom.xml index 7f0d9892b0a..2d2119b5975 100644 --- a/jetty-rewrite/pom.xml +++ b/jetty-rewrite/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-rewrite diff --git a/jetty-runner/pom.xml b/jetty-runner/pom.xml index 5436edd9dd7..128e8a2270c 100644 --- a/jetty-runner/pom.xml +++ b/jetty-runner/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-runner diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml index 932e6c69adf..f450f80d3f5 100644 --- a/jetty-security/pom.xml +++ b/jetty-security/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-security diff --git a/jetty-server/pom.xml b/jetty-server/pom.xml index 7b0e4878e70..2b59d5a02d8 100644 --- a/jetty-server/pom.xml +++ b/jetty-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-server diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml index 3179da17c17..10083760983 100644 --- a/jetty-servlet/pom.xml +++ b/jetty-servlet/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-servlet diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml index c0b88a17231..b4bb47da94f 100644 --- a/jetty-servlets/pom.xml +++ b/jetty-servlets/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-servlets diff --git a/jetty-spdy/pom.xml b/jetty-spdy/pom.xml index ec09355fd93..f3b67f21c09 100644 --- a/jetty-spdy/pom.xml +++ b/jetty-spdy/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-spdy/spdy-alpn-tests/pom.xml b/jetty-spdy/spdy-alpn-tests/pom.xml index 75b90d0f4c4..90c0f0ad259 100644 --- a/jetty-spdy/spdy-alpn-tests/pom.xml +++ b/jetty-spdy/spdy-alpn-tests/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-spdy/spdy-client/pom.xml b/jetty-spdy/spdy-client/pom.xml index 08ba4211c62..c3f6ba1784e 100644 --- a/jetty-spdy/spdy-client/pom.xml +++ b/jetty-spdy/spdy-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-spdy/spdy-core/pom.xml b/jetty-spdy/spdy-core/pom.xml index 7ad0cacda46..d182a2e8895 100644 --- a/jetty-spdy/spdy-core/pom.xml +++ b/jetty-spdy/spdy-core/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-spdy/spdy-example-webapp/pom.xml b/jetty-spdy/spdy-example-webapp/pom.xml index 8bed664f68f..0bc3672f689 100644 --- a/jetty-spdy/spdy-example-webapp/pom.xml +++ b/jetty-spdy/spdy-example-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 spdy-example-webapp diff --git a/jetty-spdy/spdy-http-client-transport/pom.xml b/jetty-spdy/spdy-http-client-transport/pom.xml index 0df7c8619c9..cdbe0e3792d 100644 --- a/jetty-spdy/spdy-http-client-transport/pom.xml +++ b/jetty-spdy/spdy-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-spdy/spdy-http-common/pom.xml b/jetty-spdy/spdy-http-common/pom.xml index 4e94c1f2166..77c32f5bbb7 100644 --- a/jetty-spdy/spdy-http-common/pom.xml +++ b/jetty-spdy/spdy-http-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-spdy/spdy-http-server/pom.xml b/jetty-spdy/spdy-http-server/pom.xml index e89267a5423..c637829ea88 100644 --- a/jetty-spdy/spdy-http-server/pom.xml +++ b/jetty-spdy/spdy-http-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 spdy-http-server diff --git a/jetty-spdy/spdy-server/pom.xml b/jetty-spdy/spdy-server/pom.xml index a26c5623fe1..d775dfa0ac7 100644 --- a/jetty-spdy/spdy-server/pom.xml +++ b/jetty-spdy/spdy-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-spring/pom.xml b/jetty-spring/pom.xml index ef715ce8cac..4ec271aeefb 100644 --- a/jetty-spring/pom.xml +++ b/jetty-spring/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-spring diff --git a/jetty-start/pom.xml b/jetty-start/pom.xml index 36777116dab..5cb450f6e94 100644 --- a/jetty-start/pom.xml +++ b/jetty-start/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-start diff --git a/jetty-util-ajax/pom.xml b/jetty-util-ajax/pom.xml index 6b73779082a..43f97b9d87b 100644 --- a/jetty-util-ajax/pom.xml +++ b/jetty-util-ajax/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-util-ajax diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml index ec1b764d278..ac6df2d8bb3 100644 --- a/jetty-util/pom.xml +++ b/jetty-util/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-util diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml index 3b7f79e3171..3fda99abc18 100644 --- a/jetty-webapp/pom.xml +++ b/jetty-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 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 fb0c00c0730..42947ea040c 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.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-websocket/javax-websocket-server-impl/pom.xml b/jetty-websocket/javax-websocket-server-impl/pom.xml index 40452436597..8ad9ddf6457 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.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml index a470437592e..9b4e0298dc8 100644 --- a/jetty-websocket/pom.xml +++ b/jetty-websocket/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml index feffba4815b..5bbfac9952c 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.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml index d86d68faab3..4df01476ebc 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.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml index 6f8c72fe1eb..8a03c6c981d 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.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml index 2422509679a..4f501f19a9b 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.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml index 41d7879b3b8..df09e7da449 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.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 diff --git a/jetty-xml/pom.xml b/jetty-xml/pom.xml index ceca1931846..618734dd5b7 100644 --- a/jetty-xml/pom.xml +++ b/jetty-xml/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 jetty-xml diff --git a/pom.xml b/pom.xml index d9d40dbe3e4..8e99d8b7b57 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ 23 jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 Jetty :: Project http://www.eclipse.org/jetty pom diff --git a/tests/pom.xml b/tests/pom.xml index c5d08e8e7f2..165990383bb 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty jetty-project - 9.2.24-SNAPSHOT + 9.2.24.v20180105 ../pom.xml org.eclipse.jetty.tests diff --git a/tests/test-continuation/pom.xml b/tests/test-continuation/pom.xml index 918d8e819ea..631f4102b18 100644 --- a/tests/test-continuation/pom.xml +++ b/tests/test-continuation/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 ../pom.xml 4.0.0 diff --git a/tests/test-integration/pom.xml b/tests/test-integration/pom.xml index 8069c36fd8a..1a807a49142 100644 --- a/tests/test-integration/pom.xml +++ b/tests/test-integration/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 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 740d8c737cb..c58431ad54a 100644 --- a/tests/test-jmx/jmx-webapp-it/pom.xml +++ b/tests/test-jmx/jmx-webapp-it/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 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 f6e0fb47aa3..4621e994b3b 100644 --- a/tests/test-jmx/jmx-webapp/pom.xml +++ b/tests/test-jmx/jmx-webapp/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 jmx-webapp war diff --git a/tests/test-jmx/pom.xml b/tests/test-jmx/pom.xml index 3a7bf213d4f..8aa701770f8 100644 --- a/tests/test-jmx/pom.xml +++ b/tests/test-jmx/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 4.0.0 test-jmx-parent diff --git a/tests/test-loginservice/pom.xml b/tests/test-loginservice/pom.xml index a319f35e7a8..6100d327e2c 100644 --- a/tests/test-loginservice/pom.xml +++ b/tests/test-loginservice/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 test-loginservice Jetty Tests :: Login Service diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml index 1ce9124372f..652d3b64278 100644 --- a/tests/test-quickstart/pom.xml +++ b/tests/test-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 ../pom.xml 4.0.0 diff --git a/tests/test-sessions/pom.xml b/tests/test-sessions/pom.xml index c3f89c7cf92..e66e30db1a8 100644 --- a/tests/test-sessions/pom.xml +++ b/tests/test-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 test-sessions-parent Jetty Tests :: Sessions :: Parent diff --git a/tests/test-sessions/test-hash-sessions/pom.xml b/tests/test-sessions/test-hash-sessions/pom.xml index 9c92c4f2b44..4821e557bfe 100644 --- a/tests/test-sessions/test-hash-sessions/pom.xml +++ b/tests/test-sessions/test-hash-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 test-hash-sessions Jetty Tests :: Sessions :: Hash diff --git a/tests/test-sessions/test-jdbc-sessions/pom.xml b/tests/test-sessions/test-jdbc-sessions/pom.xml index 1f7efb2c068..fdb535191ab 100644 --- a/tests/test-sessions/test-jdbc-sessions/pom.xml +++ b/tests/test-sessions/test-jdbc-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 test-jdbc-sessions Jetty Tests :: Sessions :: JDBC diff --git a/tests/test-sessions/test-mongodb-sessions/pom.xml b/tests/test-sessions/test-mongodb-sessions/pom.xml index 5575e1196f8..ba96b9965f1 100644 --- a/tests/test-sessions/test-mongodb-sessions/pom.xml +++ b/tests/test-sessions/test-mongodb-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 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 891d8dc69e4..4c28123e7ee 100644 --- a/tests/test-sessions/test-sessions-common/pom.xml +++ b/tests/test-sessions/test-sessions-common/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 test-sessions-common Jetty Tests :: Sessions :: Common diff --git a/tests/test-webapps/pom.xml b/tests/test-webapps/pom.xml index a45f2ea480e..95918008f9f 100644 --- a/tests/test-webapps/pom.xml +++ b/tests/test-webapps/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 ../pom.xml test-webapps-parent diff --git a/tests/test-webapps/test-jaas-webapp/pom.xml b/tests/test-webapps/test-jaas-webapp/pom.xml index 58c90f74207..78f882ea9e1 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.2.24-SNAPSHOT + 9.2.24.v20180105 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 6bc5b60b7cd..6f74c902ebe 100644 --- a/tests/test-webapps/test-jetty-webapp/pom.xml +++ b/tests/test-webapps/test-jetty-webapp/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 ../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 5a68cd3b3e2..6ed94fbb2ad 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.2.24-SNAPSHOT + 9.2.24.v20180105 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 5aadb0f12de..c47a2079405 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.2.24-SNAPSHOT + 9.2.24.v20180105 Jetty Tests :: WebApp :: Mock Resources test-mock-resources diff --git a/tests/test-webapps/test-proxy-webapp/pom.xml b/tests/test-webapps/test-proxy-webapp/pom.xml index 3436eae7500..5911b045252 100644 --- a/tests/test-webapps/test-proxy-webapp/pom.xml +++ b/tests/test-webapps/test-proxy-webapp/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 ../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 08c0049f86e..0afa4dc6f36 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.2.24-SNAPSHOT + 9.2.24.v20180105 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 a6a9af59bdf..e812e93a0c2 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.2.24-SNAPSHOT + 9.2.24.v20180105 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 8ce899da2cd..4433594f2c7 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.2.24-SNAPSHOT + 9.2.24.v20180105 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 cf4f00cdd1a..a73cb9e42d1 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.2.24-SNAPSHOT + 9.2.24.v20180105 Jetty Tests :: WebApp :: Servlet Spec :: Fragment Jar org.eclipse.jetty.tests diff --git a/tests/test-webapps/test-webapp-rfc2616/pom.xml b/tests/test-webapps/test-webapp-rfc2616/pom.xml index c59919bc870..b01ac43ea2c 100644 --- a/tests/test-webapps/test-webapp-rfc2616/pom.xml +++ b/tests/test-webapps/test-webapp-rfc2616/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.24-SNAPSHOT + 9.2.24.v20180105 test-webapp-rfc2616 Jetty Tests :: WebApp :: RFC2616 From bd01e1877a5e264a706e4991f983ae15b70f666b Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 5 Jan 2018 11:35:42 -0600 Subject: [PATCH 002/134] Updating to version 9.2.25-SNAPSHOT --- VERSION.txt | 2 ++ aggregates/jetty-all/pom.xml | 2 +- apache-jsp/pom.xml | 2 +- apache-jstl/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/jetty-alpn-server/pom.xml | 2 +- jetty-alpn/pom.xml | 2 +- jetty-annotations/pom.xml | 2 +- jetty-ant/pom.xml | 2 +- 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-fcgi/fcgi-client/pom.xml | 2 +- jetty-fcgi/fcgi-server/pom.xml | 2 +- jetty-fcgi/pom.xml | 2 +- jetty-http-spi/pom.xml | 2 +- jetty-http/pom.xml | 2 +- jetty-io/pom.xml | 2 +- jetty-jaas/pom.xml | 2 +- jetty-jaspi/pom.xml | 2 +- jetty-jmx/pom.xml | 2 +- jetty-jndi/pom.xml | 2 +- jetty-jsp/pom.xml | 2 +- jetty-jspc-maven-plugin/pom.xml | 2 +- jetty-maven-plugin/pom.xml | 2 +- jetty-monitor/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-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-spdy/pom.xml | 2 +- jetty-spdy/spdy-alpn-tests/pom.xml | 2 +- jetty-spdy/spdy-client/pom.xml | 2 +- jetty-spdy/spdy-core/pom.xml | 2 +- jetty-spdy/spdy-example-webapp/pom.xml | 2 +- jetty-spdy/spdy-http-client-transport/pom.xml | 2 +- jetty-spdy/spdy-http-common/pom.xml | 2 +- jetty-spdy/spdy-http-server/pom.xml | 2 +- jetty-spdy/spdy-server/pom.xml | 2 +- jetty-spring/pom.xml | 2 +- jetty-start/pom.xml | 2 +- jetty-util-ajax/pom.xml | 2 +- jetty-util/pom.xml | 2 +- jetty-webapp/pom.xml | 2 +- jetty-websocket/javax-websocket-client-impl/pom.xml | 2 +- jetty-websocket/javax-websocket-server-impl/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-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 +- tests/test-sessions/test-hash-sessions/pom.xml | 2 +- tests/test-sessions/test-jdbc-sessions/pom.xml | 2 +- tests/test-sessions/test-mongodb-sessions/pom.xml | 2 +- tests/test-sessions/test-sessions-common/pom.xml | 2 +- tests/test-webapps/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 +- tests/test-webapps/test-mock-resources/pom.xml | 2 +- tests/test-webapps/test-proxy-webapp/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/pom.xml | 2 +- .../test-servlet-spec/test-container-initializer/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml | 2 +- tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml | 2 +- tests/test-webapps/test-webapp-rfc2616/pom.xml | 2 +- 100 files changed, 101 insertions(+), 99 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index 4434b41c52e..5f76c236137 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,3 +1,5 @@ +jetty-9.2.25-SNAPSHOT + jetty-9.2.24.v20180105 - 05 January 2018 + 2065 Backport #347 to Jetty 9.2.x diff --git a/aggregates/jetty-all/pom.xml b/aggregates/jetty-all/pom.xml index 6b4b6720eba..5c3678a795d 100644 --- a/aggregates/jetty-all/pom.xml +++ b/aggregates/jetty-all/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/apache-jsp/pom.xml b/apache-jsp/pom.xml index f04a4b72d24..c88650c52ac 100644 --- a/apache-jsp/pom.xml +++ b/apache-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 apache-jsp diff --git a/apache-jstl/pom.xml b/apache-jstl/pom.xml index a86111e40ee..d5c618e371e 100644 --- a/apache-jstl/pom.xml +++ b/apache-jstl/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 apache-jstl diff --git a/examples/async-rest/async-rest-jar/pom.xml b/examples/async-rest/async-rest-jar/pom.xml index a1afd100cf0..15d7ffc9415 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.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 org.eclipse.jetty.example-async-rest diff --git a/examples/async-rest/async-rest-webapp/pom.xml b/examples/async-rest/async-rest-webapp/pom.xml index f7ddad683ee..b0c6f033ed7 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.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 org.eclipse.jetty.example-async-rest diff --git a/examples/async-rest/pom.xml b/examples/async-rest/pom.xml index 9c4c728ed8a..634bf3cf1da 100644 --- a/examples/async-rest/pom.xml +++ b/examples/async-rest/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT ../pom.xml 4.0.0 diff --git a/examples/embedded/pom.xml b/examples/embedded/pom.xml index 470c5cb73bb..a22184fdef7 100644 --- a/examples/embedded/pom.xml +++ b/examples/embedded/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.examples examples-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT ../pom.xml 4.0.0 diff --git a/examples/pom.xml b/examples/pom.xml index 3a38d37da99..74d8b501eaf 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT ../pom.xml org.eclipse.jetty.examples diff --git a/jetty-alpn/jetty-alpn-client/pom.xml b/jetty-alpn/jetty-alpn-client/pom.xml index 1394d7b4d4f..3963e78e211 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.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-alpn-client diff --git a/jetty-alpn/jetty-alpn-server/pom.xml b/jetty-alpn/jetty-alpn-server/pom.xml index f6712586ee4..65b067b0d89 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.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-alpn-server diff --git a/jetty-alpn/pom.xml b/jetty-alpn/pom.xml index 25623a068fa..f1c144f91f4 100644 --- a/jetty-alpn/pom.xml +++ b/jetty-alpn/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-alpn-parent diff --git a/jetty-annotations/pom.xml b/jetty-annotations/pom.xml index b1d1550e2a3..4fcad3f1955 100644 --- a/jetty-annotations/pom.xml +++ b/jetty-annotations/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-annotations diff --git a/jetty-ant/pom.xml b/jetty-ant/pom.xml index e02bfe61bee..724ce21d9f8 100644 --- a/jetty-ant/pom.xml +++ b/jetty-ant/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-ant diff --git a/jetty-cdi/pom.xml b/jetty-cdi/pom.xml index 6e5a03d88e4..99a19e7784a 100644 --- a/jetty-cdi/pom.xml +++ b/jetty-cdi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-cdi diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml index a6308c013c1..f48ec8b897b 100644 --- a/jetty-client/pom.xml +++ b/jetty-client/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-continuation/pom.xml b/jetty-continuation/pom.xml index 6f589b0352e..6eca3ac1a40 100644 --- a/jetty-continuation/pom.xml +++ b/jetty-continuation/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-continuation diff --git a/jetty-deploy/pom.xml b/jetty-deploy/pom.xml index 2815f48be53..c9f9dd2c742 100644 --- a/jetty-deploy/pom.xml +++ b/jetty-deploy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-deploy diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml index c67abc24556..a5c8e58b074 100644 --- a/jetty-distribution/pom.xml +++ b/jetty-distribution/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT jetty-distribution Jetty :: Distribution Assemblies diff --git a/jetty-fcgi/fcgi-client/pom.xml b/jetty-fcgi/fcgi-client/pom.xml index 4a9cc8caa10..0327bcb5c65 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.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-fcgi/fcgi-server/pom.xml b/jetty-fcgi/fcgi-server/pom.xml index c229415b7db..c6123a1720a 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.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-fcgi/pom.xml b/jetty-fcgi/pom.xml index 992360aa91e..b9d6cef2a9f 100644 --- a/jetty-fcgi/pom.xml +++ b/jetty-fcgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-http-spi/pom.xml b/jetty-http-spi/pom.xml index 0a538fb2c06..f472d74c509 100644 --- a/jetty-http-spi/pom.xml +++ b/jetty-http-spi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-http-spi diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml index 03f66751e10..80c95701855 100644 --- a/jetty-http/pom.xml +++ b/jetty-http/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-http diff --git a/jetty-io/pom.xml b/jetty-io/pom.xml index 71a439d89a0..454f77c6726 100644 --- a/jetty-io/pom.xml +++ b/jetty-io/pom.xml @@ -2,7 +2,7 @@ jetty-project org.eclipse.jetty - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-io diff --git a/jetty-jaas/pom.xml b/jetty-jaas/pom.xml index eb1da66fcca..b1d9175233a 100644 --- a/jetty-jaas/pom.xml +++ b/jetty-jaas/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-jaas diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml index f21a5c5d249..4b6c832444b 100644 --- a/jetty-jaspi/pom.xml +++ b/jetty-jaspi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-jaspi diff --git a/jetty-jmx/pom.xml b/jetty-jmx/pom.xml index 614547bc522..5063254a3b0 100644 --- a/jetty-jmx/pom.xml +++ b/jetty-jmx/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-jmx diff --git a/jetty-jndi/pom.xml b/jetty-jndi/pom.xml index cd7df2fbdd9..98b4f8203d0 100644 --- a/jetty-jndi/pom.xml +++ b/jetty-jndi/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-jndi diff --git a/jetty-jsp/pom.xml b/jetty-jsp/pom.xml index 0fe721a1222..8501f075d96 100644 --- a/jetty-jsp/pom.xml +++ b/jetty-jsp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-jsp diff --git a/jetty-jspc-maven-plugin/pom.xml b/jetty-jspc-maven-plugin/pom.xml index a095a0a1d8b..a612da5f032 100644 --- a/jetty-jspc-maven-plugin/pom.xml +++ b/jetty-jspc-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-jspc-maven-plugin diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml index cafa8c1b72c..e0f4d51545b 100644 --- a/jetty-maven-plugin/pom.xml +++ b/jetty-maven-plugin/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-maven-plugin diff --git a/jetty-monitor/pom.xml b/jetty-monitor/pom.xml index 4d05a0a3e9d..35abd3a11d1 100644 --- a/jetty-monitor/pom.xml +++ b/jetty-monitor/pom.xml @@ -19,7 +19,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-monitor diff --git a/jetty-nosql/pom.xml b/jetty-nosql/pom.xml index 51610c1cca2..ae10b41e544 100644 --- a/jetty-nosql/pom.xml +++ b/jetty-nosql/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-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 3953a2202e4..0d6c6554412 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.2.24.v20180105 + 9.2.25-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 7bc1a167427..cc7de7f6c3c 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.2.24.v20180105 + 9.2.25-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 c9f093dac8c..795ebfc4617 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.2.24.v20180105 + 9.2.25-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 71b8e378fb9..7e3f6d13284 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.2.24.v20180105 + 9.2.25-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 45fc5b5adf1..84d5b836332 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.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-httpservice diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml index 404f46c0e5c..cfd9c18c6ac 100644 --- a/jetty-osgi/pom.xml +++ b/jetty-osgi/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT org.eclipse.jetty.osgi jetty-osgi-project diff --git a/jetty-osgi/test-jetty-osgi-context/pom.xml b/jetty-osgi/test-jetty-osgi-context/pom.xml index 3e9b7736453..432486a2ff5 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.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 test-jetty-osgi-context diff --git a/jetty-osgi/test-jetty-osgi-webapp/pom.xml b/jetty-osgi/test-jetty-osgi-webapp/pom.xml index 0c771984441..dcee1aab6b7 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.2.24.v20180105 + 9.2.25-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 120622e7004..645fcc008ea 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.2.24.v20180105 + 9.2.25-SNAPSHOT ../pom.xml 4.0.0 diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml index 44d436cd827..7296b0bf0f0 100644 --- a/jetty-plus/pom.xml +++ b/jetty-plus/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-plus diff --git a/jetty-proxy/pom.xml b/jetty-proxy/pom.xml index c4afae712fb..1b808ba9ce1 100644 --- a/jetty-proxy/pom.xml +++ b/jetty-proxy/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-proxy diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml index 7266765a1ae..6f4ea12e2e3 100644 --- a/jetty-quickstart/pom.xml +++ b/jetty-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 org.eclipse.jetty diff --git a/jetty-rewrite/pom.xml b/jetty-rewrite/pom.xml index 2d2119b5975..9a528b8417a 100644 --- a/jetty-rewrite/pom.xml +++ b/jetty-rewrite/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-rewrite diff --git a/jetty-runner/pom.xml b/jetty-runner/pom.xml index 128e8a2270c..5eb2b8c5a8b 100644 --- a/jetty-runner/pom.xml +++ b/jetty-runner/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-runner diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml index f450f80d3f5..aecf4965537 100644 --- a/jetty-security/pom.xml +++ b/jetty-security/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-security diff --git a/jetty-server/pom.xml b/jetty-server/pom.xml index 2b59d5a02d8..f1e71d497a5 100644 --- a/jetty-server/pom.xml +++ b/jetty-server/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-server diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml index 10083760983..c0946468d4e 100644 --- a/jetty-servlet/pom.xml +++ b/jetty-servlet/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-servlet diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml index b4bb47da94f..c2d2f212970 100644 --- a/jetty-servlets/pom.xml +++ b/jetty-servlets/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-servlets diff --git a/jetty-spdy/pom.xml b/jetty-spdy/pom.xml index f3b67f21c09..fd9504c9d92 100644 --- a/jetty-spdy/pom.xml +++ b/jetty-spdy/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-alpn-tests/pom.xml b/jetty-spdy/spdy-alpn-tests/pom.xml index 90c0f0ad259..6d63403d755 100644 --- a/jetty-spdy/spdy-alpn-tests/pom.xml +++ b/jetty-spdy/spdy-alpn-tests/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-client/pom.xml b/jetty-spdy/spdy-client/pom.xml index c3f6ba1784e..cd0170a8ee4 100644 --- a/jetty-spdy/spdy-client/pom.xml +++ b/jetty-spdy/spdy-client/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-core/pom.xml b/jetty-spdy/spdy-core/pom.xml index d182a2e8895..24b7a99b807 100644 --- a/jetty-spdy/spdy-core/pom.xml +++ b/jetty-spdy/spdy-core/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-example-webapp/pom.xml b/jetty-spdy/spdy-example-webapp/pom.xml index 0bc3672f689..7844f4fad99 100644 --- a/jetty-spdy/spdy-example-webapp/pom.xml +++ b/jetty-spdy/spdy-example-webapp/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 spdy-example-webapp diff --git a/jetty-spdy/spdy-http-client-transport/pom.xml b/jetty-spdy/spdy-http-client-transport/pom.xml index cdbe0e3792d..63d92c1bd32 100644 --- a/jetty-spdy/spdy-http-client-transport/pom.xml +++ b/jetty-spdy/spdy-http-client-transport/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-http-common/pom.xml b/jetty-spdy/spdy-http-common/pom.xml index 77c32f5bbb7..a1f8856faf1 100644 --- a/jetty-spdy/spdy-http-common/pom.xml +++ b/jetty-spdy/spdy-http-common/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-spdy/spdy-http-server/pom.xml b/jetty-spdy/spdy-http-server/pom.xml index c637829ea88..00e72e16a7b 100644 --- a/jetty-spdy/spdy-http-server/pom.xml +++ b/jetty-spdy/spdy-http-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 spdy-http-server diff --git a/jetty-spdy/spdy-server/pom.xml b/jetty-spdy/spdy-server/pom.xml index d775dfa0ac7..4fdf66a24c2 100644 --- a/jetty-spdy/spdy-server/pom.xml +++ b/jetty-spdy/spdy-server/pom.xml @@ -3,7 +3,7 @@ org.eclipse.jetty.spdy spdy-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-spring/pom.xml b/jetty-spring/pom.xml index 4ec271aeefb..e313e44271e 100644 --- a/jetty-spring/pom.xml +++ b/jetty-spring/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-spring diff --git a/jetty-start/pom.xml b/jetty-start/pom.xml index 5cb450f6e94..bf0a681a33d 100644 --- a/jetty-start/pom.xml +++ b/jetty-start/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-start diff --git a/jetty-util-ajax/pom.xml b/jetty-util-ajax/pom.xml index 43f97b9d87b..4ffb82a374c 100644 --- a/jetty-util-ajax/pom.xml +++ b/jetty-util-ajax/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-util-ajax diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml index ac6df2d8bb3..0832030661b 100644 --- a/jetty-util/pom.xml +++ b/jetty-util/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-util diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml index 3fda99abc18..ab5a73ae9fb 100644 --- a/jetty-webapp/pom.xml +++ b/jetty-webapp/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-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 42947ea040c..b90280b9c5b 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.2.24.v20180105 + 9.2.25-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 8ad9ddf6457..6e1bbb5a26f 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.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml index 9b4e0298dc8..a247c5b2968 100644 --- a/jetty-websocket/pom.xml +++ b/jetty-websocket/pom.xml @@ -3,7 +3,7 @@ jetty-project org.eclipse.jetty - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml index 5bbfac9952c..2b48e948ff1 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.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml index 4df01476ebc..8bd09b409b8 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.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml index 8a03c6c981d..f03a66accd2 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.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml index 4f501f19a9b..951c676b9db 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.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml index df09e7da449..e48aee37e30 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.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 diff --git a/jetty-xml/pom.xml b/jetty-xml/pom.xml index 618734dd5b7..eca99ca9690 100644 --- a/jetty-xml/pom.xml +++ b/jetty-xml/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 jetty-xml diff --git a/pom.xml b/pom.xml index 8e99d8b7b57..8b7f5563dcc 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ 23 jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT Jetty :: Project http://www.eclipse.org/jetty pom diff --git a/tests/pom.xml b/tests/pom.xml index 165990383bb..e491d3edcff 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty jetty-project - 9.2.24.v20180105 + 9.2.25-SNAPSHOT ../pom.xml org.eclipse.jetty.tests diff --git a/tests/test-continuation/pom.xml b/tests/test-continuation/pom.xml index 631f4102b18..5a293942953 100644 --- a/tests/test-continuation/pom.xml +++ b/tests/test-continuation/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-integration/pom.xml b/tests/test-integration/pom.xml index 1a807a49142..c7b2ea7483b 100644 --- a/tests/test-integration/pom.xml +++ b/tests/test-integration/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.24.v20180105 + 9.2.25-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 c58431ad54a..594f1faeb3c 100644 --- a/tests/test-jmx/jmx-webapp-it/pom.xml +++ b/tests/test-jmx/jmx-webapp-it/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.2.24.v20180105 + 9.2.25-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 4621e994b3b..2eb5b01fa6a 100644 --- a/tests/test-jmx/jmx-webapp/pom.xml +++ b/tests/test-jmx/jmx-webapp/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-jmx-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT jmx-webapp war diff --git a/tests/test-jmx/pom.xml b/tests/test-jmx/pom.xml index 8aa701770f8..985a84e1624 100644 --- a/tests/test-jmx/pom.xml +++ b/tests/test-jmx/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT 4.0.0 test-jmx-parent diff --git a/tests/test-loginservice/pom.xml b/tests/test-loginservice/pom.xml index 6100d327e2c..943186912b4 100644 --- a/tests/test-loginservice/pom.xml +++ b/tests/test-loginservice/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT test-loginservice Jetty Tests :: Login Service diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml index 652d3b64278..db1a7a2a0a4 100644 --- a/tests/test-quickstart/pom.xml +++ b/tests/test-quickstart/pom.xml @@ -2,7 +2,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT ../pom.xml 4.0.0 diff --git a/tests/test-sessions/pom.xml b/tests/test-sessions/pom.xml index e66e30db1a8..7a70a0c8067 100644 --- a/tests/test-sessions/pom.xml +++ b/tests/test-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT test-sessions-parent Jetty Tests :: Sessions :: Parent diff --git a/tests/test-sessions/test-hash-sessions/pom.xml b/tests/test-sessions/test-hash-sessions/pom.xml index 4821e557bfe..d56855097fa 100644 --- a/tests/test-sessions/test-hash-sessions/pom.xml +++ b/tests/test-sessions/test-hash-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT test-hash-sessions Jetty Tests :: Sessions :: Hash diff --git a/tests/test-sessions/test-jdbc-sessions/pom.xml b/tests/test-sessions/test-jdbc-sessions/pom.xml index fdb535191ab..3002d8395c9 100644 --- a/tests/test-sessions/test-jdbc-sessions/pom.xml +++ b/tests/test-sessions/test-jdbc-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT test-jdbc-sessions Jetty Tests :: Sessions :: JDBC diff --git a/tests/test-sessions/test-mongodb-sessions/pom.xml b/tests/test-sessions/test-mongodb-sessions/pom.xml index ba96b9965f1..974d72dbf8a 100644 --- a/tests/test-sessions/test-mongodb-sessions/pom.xml +++ b/tests/test-sessions/test-mongodb-sessions/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.24.v20180105 + 9.2.25-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 4c28123e7ee..a062c51d023 100644 --- a/tests/test-sessions/test-sessions-common/pom.xml +++ b/tests/test-sessions/test-sessions-common/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-sessions-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT test-sessions-common Jetty Tests :: Sessions :: Common diff --git a/tests/test-webapps/pom.xml b/tests/test-webapps/pom.xml index 95918008f9f..b51e8c593e6 100644 --- a/tests/test-webapps/pom.xml +++ b/tests/test-webapps/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests tests-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT ../pom.xml test-webapps-parent diff --git a/tests/test-webapps/test-jaas-webapp/pom.xml b/tests/test-webapps/test-jaas-webapp/pom.xml index 78f882ea9e1..44c8ce8fde6 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.2.24.v20180105 + 9.2.25-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 6f74c902ebe..1663ae3429e 100644 --- a/tests/test-webapps/test-jetty-webapp/pom.xml +++ b/tests/test-webapps/test-jetty-webapp/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.24.v20180105 + 9.2.25-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 6ed94fbb2ad..f692707834b 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.2.24.v20180105 + 9.2.25-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 c47a2079405..86f8c79a872 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.2.24.v20180105 + 9.2.25-SNAPSHOT Jetty Tests :: WebApp :: Mock Resources test-mock-resources diff --git a/tests/test-webapps/test-proxy-webapp/pom.xml b/tests/test-webapps/test-proxy-webapp/pom.xml index 5911b045252..0656ea27759 100644 --- a/tests/test-webapps/test-proxy-webapp/pom.xml +++ b/tests/test-webapps/test-proxy-webapp/pom.xml @@ -20,7 +20,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.24.v20180105 + 9.2.25-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 0afa4dc6f36..799f8eb17a9 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.2.24.v20180105 + 9.2.25-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 e812e93a0c2..788971ce193 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.2.24.v20180105 + 9.2.25-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 4433594f2c7..c7c51d7c9e2 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.2.24.v20180105 + 9.2.25-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 a73cb9e42d1..f089cd10ab7 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.2.24.v20180105 + 9.2.25-SNAPSHOT Jetty Tests :: WebApp :: Servlet Spec :: Fragment Jar org.eclipse.jetty.tests diff --git a/tests/test-webapps/test-webapp-rfc2616/pom.xml b/tests/test-webapps/test-webapp-rfc2616/pom.xml index b01ac43ea2c..7d61146c82b 100644 --- a/tests/test-webapps/test-webapp-rfc2616/pom.xml +++ b/tests/test-webapps/test-webapp-rfc2616/pom.xml @@ -21,7 +21,7 @@ org.eclipse.jetty.tests test-webapps-parent - 9.2.24.v20180105 + 9.2.25-SNAPSHOT test-webapp-rfc2616 Jetty Tests :: WebApp :: RFC2616 From 3eb8b1d59b86d8227a9d8ed20a6ece46673a1a29 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Mon, 8 Jan 2018 11:58:55 -0600 Subject: [PATCH 003/134] Issue #1602 - Attempting to add testcase. * Attempt to replicate reproduction case reported by @janbartel Signed-off-by: Joakim Erdfelt --- .../test/DeploymentErrorInitializer.java | 38 ++++++ .../jetty/test/DeploymentErrorTest.java | 120 ++++++++++++++++++ .../resources/docroots/deployerror/badapp.xml | 12 ++ .../javax.servlet.ServletContainerInitializer | 1 + .../deployerror/badapp/WEB-INF/web.xml | 7 + 5 files changed, 178 insertions(+) create mode 100644 tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorInitializer.java create mode 100644 tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java create mode 100644 tests/test-integration/src/test/resources/docroots/deployerror/badapp.xml create mode 100644 tests/test-integration/src/test/resources/docroots/deployerror/badapp/WEB-INF/classes/META-INF/services/javax.servlet.ServletContainerInitializer create mode 100644 tests/test-integration/src/test/resources/docroots/deployerror/badapp/WEB-INF/web.xml diff --git a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorInitializer.java b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorInitializer.java new file mode 100644 index 00000000000..b203b3b1802 --- /dev/null +++ b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorInitializer.java @@ -0,0 +1,38 @@ +// +// ======================================================================== +// Copyright (c) 1995-2018 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package org.eclipse.jetty.test; + +import java.util.Set; + +import javax.servlet.ServletContainerInitializer; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; + +/** + * A SCI that tosses an Error to intentionally to cause issues with the DeploymentManager + * @see Issue #1602 + */ +public class DeploymentErrorInitializer implements ServletContainerInitializer +{ + @Override + public void onStartup(Set> c, ServletContext ctx) throws ServletException + { + throw new NoClassDefFoundError("Intentional.Failure"); + } +} diff --git a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java new file mode 100644 index 00000000000..1d113718c0c --- /dev/null +++ b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java @@ -0,0 +1,120 @@ +// +// ======================================================================== +// Copyright (c) 1995-2018 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package org.eclipse.jetty.test; + +import static org.hamcrest.Matchers.empty; +import static org.hamcrest.core.Is.is; +import static org.junit.Assert.assertThat; + +import java.net.URI; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.TimeUnit; + +import org.eclipse.jetty.deploy.App; +import org.eclipse.jetty.deploy.AppLifeCycle; +import org.eclipse.jetty.deploy.DeploymentManager; +import org.eclipse.jetty.deploy.providers.WebAppProvider; +import org.eclipse.jetty.server.Handler; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; +import org.eclipse.jetty.server.handler.ContextHandlerCollection; +import org.eclipse.jetty.server.handler.DefaultHandler; +import org.eclipse.jetty.server.handler.HandlerCollection; +import org.eclipse.jetty.toolchain.test.MavenTestingUtils; +import org.eclipse.jetty.util.resource.PathResource; +import org.eclipse.jetty.webapp.Configuration; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +public class DeploymentErrorTest +{ + private static Server server; + private static URI serverURI; // TODO: test that we can not access webapp. + private static DeploymentManager deploymentManager; + + @BeforeClass + public static void setUpServer() + { + try + { + server = new Server(); + ServerConnector connector = new ServerConnector(server); + connector.setPort(0); + server.addConnector(connector); + + // Empty handler collections + ContextHandlerCollection contexts = new ContextHandlerCollection(); + HandlerCollection handlers = new HandlerCollection(); + handlers.setHandlers(new Handler[] + { contexts, new DefaultHandler() }); + server.setHandler(handlers); + + // Deployment Manager + deploymentManager = new DeploymentManager(); + deploymentManager.setContexts(contexts); + Path testClasses = MavenTestingUtils.getTargetPath("test-classes"); + System.setProperty("maven.test.classes", testClasses.toAbsolutePath().toString()); + Path docroots = MavenTestingUtils.getTestResourcePathDir("docroots"); + System.setProperty("test.docroots", docroots.toAbsolutePath().toString()); + WebAppProvider appProvider = new WebAppProvider(); + appProvider.setMonitoredDirResource(new PathResource(docroots.resolve("deployerror"))); + appProvider.setScanInterval(1); + deploymentManager.addAppProvider(appProvider); + server.addBean(deploymentManager); + + // Setup Configurations + Configuration.ClassList classlist = Configuration.ClassList + .setServerDefault(server); + classlist.addAfter( + "org.eclipse.jetty.webapp.FragmentConfiguration", + "org.eclipse.jetty.plus.webapp.EnvConfiguration", + "org.eclipse.jetty.plus.webapp.PlusConfiguration"); + classlist.addBefore( + "org.eclipse.jetty.webapp.JettyWebXmlConfiguration", + "org.eclipse.jetty.annotations.AnnotationConfiguration"); + + server.start(); + } + catch (final Exception e) + { + e.printStackTrace(); + } + } + + @AfterClass + public static void tearDownServer() throws Exception + { + server.stop(); + } + + @Test + public void testErrorDeploy() throws Exception + { + assertThat("app not started", deploymentManager.getApps(AppLifeCycle.STARTED), empty()); + TimeUnit.SECONDS.sleep(3); + List apps = new ArrayList<>(); + apps.addAll(deploymentManager.getApps()); + assertThat("Apps tracked", apps.size(), is(1)); + App app = apps.get(0); + assertThat("App.handler.isFailed", app.getContextHandler().isFailed(), is(true)); + } +} diff --git a/tests/test-integration/src/test/resources/docroots/deployerror/badapp.xml b/tests/test-integration/src/test/resources/docroots/deployerror/badapp.xml new file mode 100644 index 00000000000..eec1b156aec --- /dev/null +++ b/tests/test-integration/src/test/resources/docroots/deployerror/badapp.xml @@ -0,0 +1,12 @@ + + + + + /badapp + /deployerror/badapp/ + + + org.eclipse.jetty.containerInitializerExclusionPattern + org.jboss.* + + \ No newline at end of file diff --git a/tests/test-integration/src/test/resources/docroots/deployerror/badapp/WEB-INF/classes/META-INF/services/javax.servlet.ServletContainerInitializer b/tests/test-integration/src/test/resources/docroots/deployerror/badapp/WEB-INF/classes/META-INF/services/javax.servlet.ServletContainerInitializer new file mode 100644 index 00000000000..753c0f1b781 --- /dev/null +++ b/tests/test-integration/src/test/resources/docroots/deployerror/badapp/WEB-INF/classes/META-INF/services/javax.servlet.ServletContainerInitializer @@ -0,0 +1 @@ +org.eclipse.jetty.test.DeploymentErrorInitializer \ No newline at end of file diff --git a/tests/test-integration/src/test/resources/docroots/deployerror/badapp/WEB-INF/web.xml b/tests/test-integration/src/test/resources/docroots/deployerror/badapp/WEB-INF/web.xml new file mode 100644 index 00000000000..267fb9d957a --- /dev/null +++ b/tests/test-integration/src/test/resources/docroots/deployerror/badapp/WEB-INF/web.xml @@ -0,0 +1,7 @@ + + Intentional Deployment Error WebApp + \ No newline at end of file From 1440b2d1fa3c9b9b387629177f9afc4fd7f0870d Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Tue, 9 Jan 2018 11:58:57 -0600 Subject: [PATCH 004/134] Issue #1602 - WebAppContext Deployment fail should be on Throwable, not Exception --- .../eclipse/jetty/plus/webapp/EnvConfiguration.java | 1 - .../java/org/eclipse/jetty/webapp/WebAppContext.java | 10 +++++----- .../eclipse/jetty/test/DeploymentErrorInitializer.java | 2 +- .../org/eclipse/jetty/test/DeploymentErrorTest.java | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/jetty-plus/src/main/java/org/eclipse/jetty/plus/webapp/EnvConfiguration.java b/jetty-plus/src/main/java/org/eclipse/jetty/plus/webapp/EnvConfiguration.java index a5ea94c5388..ee77c6cc1f5 100644 --- a/jetty-plus/src/main/java/org/eclipse/jetty/plus/webapp/EnvConfiguration.java +++ b/jetty-plus/src/main/java/org/eclipse/jetty/plus/webapp/EnvConfiguration.java @@ -40,7 +40,6 @@ import org.eclipse.jetty.plus.jndi.NamingEntryUtil; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.webapp.AbstractConfiguration; -import org.eclipse.jetty.webapp.Configuration; import org.eclipse.jetty.webapp.WebAppClassLoader; import org.eclipse.jetty.webapp.WebAppContext; import org.eclipse.jetty.xml.XmlConfiguration; diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java index 39302b92610..1755ce7fdf9 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java @@ -548,14 +548,14 @@ public class WebAppContext extends ServletContextHandler implements WebAppClassL if (isLogUrlOnStart()) dumpUrl(); } - catch (Exception e) + catch (Throwable t) { - //start up of the webapp context failed, make sure it is not started - LOG.warn("Failed startup of context "+this, e); - _unavailableException=e; + // start up of the webapp context failed, make sure it is not started + LOG.warn("Failed startup of context "+this, t); + _unavailableException=t; setAvailable(false); if (isThrowUnavailableOnStartupException()) - throw e; + throw t; } } diff --git a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorInitializer.java b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorInitializer.java index b203b3b1802..4c03dff006b 100644 --- a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorInitializer.java +++ b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorInitializer.java @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2018 Mort Bay Consulting Pty. Ltd. +// Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 diff --git a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java index 1d113718c0c..58c9a20972c 100644 --- a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java +++ b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2018 Mort Bay Consulting Pty. Ltd. +// Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 From 235cc149f3c77098741077df9cdce1e175d03452 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Wed, 10 Jan 2018 12:02:20 -0600 Subject: [PATCH 005/134] Issue #1602 - Adding more TestCases around throwUnavailableOnStartupException + Reverting minor import change to EnvConfiguration + Adding /badapp-uaf (throw unavailable fail = true) context + Adding tests for throwUnavailableOnStartupException (true & false) --- .../jetty/test/DeploymentErrorTest.java | 114 ++++++++++++++++-- .../deployerror/badapp-unavailable-false.xml | 13 ++ .../resources/docroots/deployerror/badapp.xml | 1 + 3 files changed, 117 insertions(+), 11 deletions(-) create mode 100644 tests/test-integration/src/test/resources/docroots/deployerror/badapp-unavailable-false.xml diff --git a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java index 58c9a20972c..5485e2f184a 100644 --- a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java +++ b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java @@ -18,29 +18,32 @@ package org.eclipse.jetty.test; -import static org.hamcrest.Matchers.empty; +import static org.hamcrest.Matchers.notNullValue; +import static org.hamcrest.Matchers.nullValue; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; -import java.net.URI; import java.nio.file.Path; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; -import java.util.concurrent.TimeUnit; +import java.util.Map; import org.eclipse.jetty.deploy.App; -import org.eclipse.jetty.deploy.AppLifeCycle; import org.eclipse.jetty.deploy.DeploymentManager; import org.eclipse.jetty.deploy.providers.WebAppProvider; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; +import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.server.handler.ContextHandlerCollection; import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.server.handler.HandlerCollection; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; import org.eclipse.jetty.util.resource.PathResource; +import org.eclipse.jetty.webapp.AbstractConfiguration; import org.eclipse.jetty.webapp.Configuration; +import org.eclipse.jetty.webapp.WebAppContext; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -48,7 +51,6 @@ import org.junit.Test; public class DeploymentErrorTest { private static Server server; - private static URI serverURI; // TODO: test that we can not access webapp. private static DeploymentManager deploymentManager; @BeforeClass @@ -92,6 +94,10 @@ public class DeploymentErrorTest "org.eclipse.jetty.webapp.JettyWebXmlConfiguration", "org.eclipse.jetty.annotations.AnnotationConfiguration"); + // Tracking Config + classlist.addBefore("org.eclipse.jetty.webapp.WebInfConfiguration", + TrackedConfiguration.class.getName()); + server.start(); } catch (final Exception e) @@ -107,14 +113,100 @@ public class DeploymentErrorTest } @Test - public void testErrorDeploy() throws Exception + public void testErrorDeploy_ThrowUnavailableTrue() throws Exception { - assertThat("app not started", deploymentManager.getApps(AppLifeCycle.STARTED), empty()); - TimeUnit.SECONDS.sleep(3); List apps = new ArrayList<>(); apps.addAll(deploymentManager.getApps()); - assertThat("Apps tracked", apps.size(), is(1)); - App app = apps.get(0); - assertThat("App.handler.isFailed", app.getContextHandler().isFailed(), is(true)); + assertThat("Apps tracked", apps.size(), is(2)); + String contextPath = "/badapp"; + App app = findApp(contextPath, apps); + ContextHandler context = app.getContextHandler(); + assertThat("ContextHandler.isStarted", context.isStarted(), is(false)); + assertThat("ContextHandler.isFailed", context.isFailed(), is(true)); + assertThat("ContextHandler.isAvailable", context.isAvailable(), is(false)); + WebAppContext webapp = (WebAppContext) context; + TrackedConfiguration trackedConfiguration = null; + for(Configuration webappConfig: webapp.getConfigurations()) + { + if(webappConfig instanceof TrackedConfiguration) + trackedConfiguration = (TrackedConfiguration) webappConfig; + } + assertThat("webapp TrackedConfiguration exists", trackedConfiguration, notNullValue()); + assertThat("trackedConfig.preConfigureCount", trackedConfiguration.preConfigureCounts.get(contextPath), is(1)); + assertThat("trackedConfig.configureCount", trackedConfiguration.configureCounts.get(contextPath), is(1)); + // NOTE: Failure occurs during configure, so postConfigure never runs. + assertThat("trackedConfig.postConfigureCount", trackedConfiguration.postConfigureCounts.get(contextPath), nullValue()); + } + + @Test + public void testErrorDeploy_ThrowUnavailableFalse() throws Exception + { + List apps = new ArrayList<>(); + apps.addAll(deploymentManager.getApps()); + assertThat("Apps tracked", apps.size(), is(2)); + String contextPath = "/badapp-uaf"; + App app = findApp(contextPath, apps); + ContextHandler context = app.getContextHandler(); + assertThat("ContextHandler.isStarted", context.isStarted(), is(true)); + assertThat("ContextHandler.isFailed", context.isFailed(), is(false)); + assertThat("ContextHandler.isAvailable", context.isAvailable(), is(false)); + WebAppContext webapp = (WebAppContext) context; + TrackedConfiguration trackedConfiguration = null; + for(Configuration webappConfig: webapp.getConfigurations()) + { + if(webappConfig instanceof TrackedConfiguration) + trackedConfiguration = (TrackedConfiguration) webappConfig; + } + assertThat("webapp TrackedConfiguration exists", trackedConfiguration, notNullValue()); + assertThat("trackedConfig.preConfigureCount", trackedConfiguration.preConfigureCounts.get(contextPath), is(1)); + assertThat("trackedConfig.configureCount", trackedConfiguration.configureCounts.get(contextPath), is(1)); + // NOTE: Failure occurs during configure, so postConfigure never runs. + assertThat("trackedConfig.postConfigureCount", trackedConfiguration.postConfigureCounts.get(contextPath), nullValue()); + } + + private App findApp(String contextPath, List apps) + { + for (App app : apps) + { + if (contextPath.equals(app.getContextPath())) + return app; + } + return null; + } + + public static class TrackedConfiguration extends AbstractConfiguration + { + public Map preConfigureCounts = new HashMap<>(); + public Map configureCounts = new HashMap<>(); + public Map postConfigureCounts = new HashMap<>(); + + private void incrementCount(WebAppContext context, Map contextCounts) + { + Integer count = contextCounts.get(context.getContextPath()); + if(count == null) + { + count = new Integer(0); + } + count++; + contextCounts.put(context.getContextPath(), count); + } + + @Override + public void preConfigure(WebAppContext context) throws Exception + { + incrementCount(context, preConfigureCounts); + } + + @Override + public void configure(WebAppContext context) throws Exception + { + incrementCount(context, configureCounts); + } + + @Override + public void postConfigure(WebAppContext context) throws Exception + { + incrementCount(context, postConfigureCounts); + } } } diff --git a/tests/test-integration/src/test/resources/docroots/deployerror/badapp-unavailable-false.xml b/tests/test-integration/src/test/resources/docroots/deployerror/badapp-unavailable-false.xml new file mode 100644 index 00000000000..382e5cbc0dd --- /dev/null +++ b/tests/test-integration/src/test/resources/docroots/deployerror/badapp-unavailable-false.xml @@ -0,0 +1,13 @@ + + + + + /badapp-uaf + /deployerror/badapp/ + + false + + org.eclipse.jetty.containerInitializerExclusionPattern + org.jboss.* + + \ No newline at end of file diff --git a/tests/test-integration/src/test/resources/docroots/deployerror/badapp.xml b/tests/test-integration/src/test/resources/docroots/deployerror/badapp.xml index eec1b156aec..d638c5528bf 100644 --- a/tests/test-integration/src/test/resources/docroots/deployerror/badapp.xml +++ b/tests/test-integration/src/test/resources/docroots/deployerror/badapp.xml @@ -5,6 +5,7 @@ /badapp /deployerror/badapp/ + true org.eclipse.jetty.containerInitializerExclusionPattern org.jboss.* From ce84ca35fb0c53e0e4c122560e14ce1fb20d058c Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 11 Jan 2018 09:36:05 -0600 Subject: [PATCH 006/134] Issue #1602 - LifeCycle FAILED fixes + AbstractLifeCycle.setFailed(Throwable) is now protected, so that the odd usages from WebAppContext.doStart() can be supported + The AbstractLifeCycle.doStart() now checks for state == FAILED --- .../util/component/AbstractLifeCycle.java | 4 +-- .../eclipse/jetty/webapp/WebAppContext.java | 1 + .../jetty/test/DeploymentErrorTest.java | 31 +++++++++++++++---- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/component/AbstractLifeCycle.java b/jetty-util/src/main/java/org/eclipse/jetty/util/component/AbstractLifeCycle.java index f9a9894501c..5cd49df81c2 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/component/AbstractLifeCycle.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/component/AbstractLifeCycle.java @@ -62,7 +62,7 @@ public abstract class AbstractLifeCycle implements LifeCycle { try { - if (_state == __STARTED || _state == __STARTING) + if (_state == __STARTED || _state == __STARTING || _state == __FAILED) return; setStarting(); doStart(); @@ -206,7 +206,7 @@ public abstract class AbstractLifeCycle implements LifeCycle listener.lifeCycleStopped(this); } - private void setFailed(Throwable th) + protected void setFailed(Throwable th) { _state = __FAILED; if (LOG.isDebugEnabled()) diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java index 1755ce7fdf9..38db4557bdd 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java @@ -554,6 +554,7 @@ public class WebAppContext extends ServletContextHandler implements WebAppClassL LOG.warn("Failed startup of context "+this, t); _unavailableException=t; setAvailable(false); + setFailed(t); if (isThrowUnavailableOnStartupException()) throw t; } diff --git a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java index 5485e2f184a..26c009360de 100644 --- a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java +++ b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java @@ -18,6 +18,7 @@ package org.eclipse.jetty.test; +import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.notNullValue; import static org.hamcrest.Matchers.nullValue; import static org.hamcrest.core.Is.is; @@ -52,6 +53,7 @@ public class DeploymentErrorTest { private static Server server; private static DeploymentManager deploymentManager; + private static ContextHandlerCollection contexts; @BeforeClass public static void setUpServer() @@ -63,12 +65,8 @@ public class DeploymentErrorTest connector.setPort(0); server.addConnector(connector); - // Empty handler collections - ContextHandlerCollection contexts = new ContextHandlerCollection(); - HandlerCollection handlers = new HandlerCollection(); - handlers.setHandlers(new Handler[] - { contexts, new DefaultHandler() }); - server.setHandler(handlers); + // Empty contexts collections + contexts = new ContextHandlerCollection(); // Deployment Manager deploymentManager = new DeploymentManager(); @@ -83,6 +81,12 @@ public class DeploymentErrorTest deploymentManager.addAppProvider(appProvider); server.addBean(deploymentManager); + // Server handlers + HandlerCollection handlers = new HandlerCollection(); + handlers.setHandlers(new Handler[] + {contexts, new DefaultHandler() }); + server.setHandler(handlers); + // Setup Configurations Configuration.ClassList classlist = Configuration.ClassList .setServerDefault(server); @@ -164,6 +168,21 @@ public class DeploymentErrorTest assertThat("trackedConfig.postConfigureCount", trackedConfiguration.postConfigureCounts.get(contextPath), nullValue()); } + @Test + public void testContextHandlerCollection() + { + Handler handlers[] = contexts.getHandlers(); + assertThat("ContextHandlerCollection.Handlers.length", handlers.length, is(2)); + + // Verify that both handlers are unavailable + for(Handler handler: handlers) + { + assertThat("Handler", handler, instanceOf(ContextHandler.class)); + ContextHandler contextHandler = (ContextHandler) handler; + assertThat("ContextHandler.isAvailable", contextHandler.isAvailable(), is(false)); + } + } + private App findApp(String contextPath, List apps) { for (App app : apps) From 4ba0277c37bb9a5c248f7b91b16df64a38e36163 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 11 Jan 2018 10:00:39 -0600 Subject: [PATCH 007/134] Issue #1602 - Requested fixes to StandardStarter and AbstractLifeCycle --- .../jetty/deploy/bindings/StandardStarter.java | 18 ++++++++++++------ .../util/component/AbstractLifeCycle.java | 2 +- .../eclipse/jetty/webapp/WebAppContext.java | 4 ++-- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/StandardStarter.java b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/StandardStarter.java index 4466ce220af..b9289b8fb93 100644 --- a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/StandardStarter.java +++ b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/StandardStarter.java @@ -22,6 +22,7 @@ import org.eclipse.jetty.deploy.App; import org.eclipse.jetty.deploy.AppLifeCycle; import org.eclipse.jetty.deploy.graph.Node; import org.eclipse.jetty.server.handler.ContextHandler; +import org.eclipse.jetty.server.handler.ContextHandlerCollection; public class StandardStarter implements AppLifeCycle.Binding { @@ -35,12 +36,17 @@ public class StandardStarter implements AppLifeCycle.Binding @Override public void processBinding(Node node, App app) throws Exception { + ContextHandlerCollection contexts = app.getDeploymentManager().getContexts(); + ContextHandler handler = app.getContextHandler(); - - // start the handler - handler.start(); - - // After starting let the context manage state - app.getDeploymentManager().getContexts().manage(handler); + + if (contexts.isRunning() && !handler.isRunning()) + { + // start the handler manually + handler.start(); + + // After starting let the context manage state + contexts.manage(handler); + } } } diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/component/AbstractLifeCycle.java b/jetty-util/src/main/java/org/eclipse/jetty/util/component/AbstractLifeCycle.java index 5cd49df81c2..b1247a65632 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/component/AbstractLifeCycle.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/component/AbstractLifeCycle.java @@ -62,7 +62,7 @@ public abstract class AbstractLifeCycle implements LifeCycle { try { - if (_state == __STARTED || _state == __STARTING || _state == __FAILED) + if (_state == __STARTED || _state == __STARTING) return; setStarting(); doStart(); diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java index 38db4557bdd..c5962c3b942 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java @@ -553,8 +553,8 @@ public class WebAppContext extends ServletContextHandler implements WebAppClassL // start up of the webapp context failed, make sure it is not started LOG.warn("Failed startup of context "+this, t); _unavailableException=t; - setAvailable(false); - setFailed(t); + setAvailable(false); // webapp cannot be accessed + setFailed(t); // be a proper Jetty LifeCycle participant and notify listeners of failure if (isThrowUnavailableOnStartupException()) throw t; } From f3c36f804a314598f6406b172e1de262bd60c40e Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 11 Jan 2018 16:16:26 -0600 Subject: [PATCH 008/134] Issue #1602 - Reverting AbstractLifeCycle changes per review --- .../org/eclipse/jetty/util/component/AbstractLifeCycle.java | 2 +- .../src/main/java/org/eclipse/jetty/webapp/WebAppContext.java | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/component/AbstractLifeCycle.java b/jetty-util/src/main/java/org/eclipse/jetty/util/component/AbstractLifeCycle.java index b1247a65632..f9a9894501c 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/component/AbstractLifeCycle.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/component/AbstractLifeCycle.java @@ -206,7 +206,7 @@ public abstract class AbstractLifeCycle implements LifeCycle listener.lifeCycleStopped(this); } - protected void setFailed(Throwable th) + private void setFailed(Throwable th) { _state = __FAILED; if (LOG.isDebugEnabled()) diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java index c5962c3b942..ea378529b95 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java @@ -553,8 +553,7 @@ public class WebAppContext extends ServletContextHandler implements WebAppClassL // start up of the webapp context failed, make sure it is not started LOG.warn("Failed startup of context "+this, t); _unavailableException=t; - setAvailable(false); // webapp cannot be accessed - setFailed(t); // be a proper Jetty LifeCycle participant and notify listeners of failure + setAvailable(false); // webapp cannot be accessed (results in status code 503) if (isThrowUnavailableOnStartupException()) throw t; } From 1998720719019cbfb38dcd568e7c67cc9695676b Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 11 Jan 2018 16:17:05 -0600 Subject: [PATCH 009/134] Issue #1602 - more tests --- .../jetty/test/DeploymentErrorTest.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java index 26c009360de..63a684ed328 100644 --- a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java +++ b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java @@ -24,15 +24,20 @@ import static org.hamcrest.Matchers.nullValue; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; +import java.net.URI; import java.nio.file.Path; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import org.eclipse.jetty.client.HttpClient; +import org.eclipse.jetty.client.api.ContentResponse; import org.eclipse.jetty.deploy.App; import org.eclipse.jetty.deploy.DeploymentManager; import org.eclipse.jetty.deploy.providers.WebAppProvider; +import org.eclipse.jetty.http.HttpMethod; +import org.eclipse.jetty.http.HttpStatus; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; @@ -140,6 +145,8 @@ public class DeploymentErrorTest assertThat("trackedConfig.configureCount", trackedConfiguration.configureCounts.get(contextPath), is(1)); // NOTE: Failure occurs during configure, so postConfigure never runs. assertThat("trackedConfig.postConfigureCount", trackedConfiguration.postConfigureCounts.get(contextPath), nullValue()); + + assertHttpState(contextPath, HttpStatus.NOT_FOUND_404); } @Test @@ -166,6 +173,24 @@ public class DeploymentErrorTest assertThat("trackedConfig.configureCount", trackedConfiguration.configureCounts.get(contextPath), is(1)); // NOTE: Failure occurs during configure, so postConfigure never runs. assertThat("trackedConfig.postConfigureCount", trackedConfiguration.postConfigureCounts.get(contextPath), nullValue()); + + assertHttpState(contextPath, HttpStatus.SERVICE_UNAVAILABLE_503); + } + + private void assertHttpState(String contextPath, int expectedStatusCode) throws Exception + { + URI destURI = server.getURI().resolve(contextPath); + HttpClient client = new HttpClient(); + try + { + client.start(); + ContentResponse response = client.newRequest(destURI).method(HttpMethod.GET).send(); + assertThat("GET Response: " + destURI, response.getStatus(), is(expectedStatusCode)); + } + finally + { + client.stop(); + } } @Test From eca61cd616ab66a003e28e76d6327bda8cd3b102 Mon Sep 17 00:00:00 2001 From: Jesse McConnell Date: Wed, 24 Jan 2018 07:59:31 -0600 Subject: [PATCH 010/134] Resolves #2152 by adding new artifacts with 'sources' classifier which contains the -sources artifacts for jetty classes under lib (only) Signed-off-by: Jesse McConnell --- jetty-home/pom.xml | 42 +++++++++++++++++-- .../src/main/assembly/jetty-assembly.xml | 2 +- .../main/assembly/jetty-source-assembly.xml | 22 ++++++++++ 3 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 jetty-home/src/main/assembly/jetty-source-assembly.xml diff --git a/jetty-home/pom.xml b/jetty-home/pom.xml index df9c3afc80d..bdaec3d81d3 100644 --- a/jetty-home/pom.xml +++ b/jetty-home/pom.xml @@ -12,6 +12,7 @@ ${basedir}/target/jetty-home + ${basedir}/target/jetty-home-sources 1.0.3 @@ -150,6 +151,25 @@ ${assembly-directory}/lib + + copy-lib-src-deps + generate-resources + + copy-dependencies + + + org.eclipse.jetty + + org.eclipse.jetty.orbit,org.eclipse.jetty.http2,org.eclipse.jetty.websocket,org.eclipse.jetty.fcgi,org.eclipse.jetty.toolchain,org.apache.taglibs + + + jetty-all,apache-jsp,apache-jstl,jetty-start,jetty-spring + + jar + sources + ${source-assembly-directory}/lib + + copy-lib-websocket-deps generate-resources @@ -322,18 +342,34 @@ org.apache.maven.plugins maven-assembly-plugin - - src/main/assembly/jetty-assembly.xml - posix false + binary package single + + + src/main/assembly/jetty-assembly.xml + + + + + sources + package + + single + + + + src/main/assembly/jetty-source-assembly.xml + + true + diff --git a/jetty-home/src/main/assembly/jetty-assembly.xml b/jetty-home/src/main/assembly/jetty-assembly.xml index c0198eb679b..c843a8cb11c 100644 --- a/jetty-home/src/main/assembly/jetty-assembly.xml +++ b/jetty-home/src/main/assembly/jetty-assembly.xml @@ -1,5 +1,5 @@ - assembly + binary-assembly tar.gz zip diff --git a/jetty-home/src/main/assembly/jetty-source-assembly.xml b/jetty-home/src/main/assembly/jetty-source-assembly.xml new file mode 100644 index 00000000000..4a230690c07 --- /dev/null +++ b/jetty-home/src/main/assembly/jetty-source-assembly.xml @@ -0,0 +1,22 @@ + + sources + + tar.gz + zip + + + + ${source-assembly-directory} + + + ** + + + + + From 48123eefc61b96869450bba653f79f8504eaa156 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Tue, 30 Jan 2018 14:23:50 -0600 Subject: [PATCH 011/134] Issue #1602 - Better tests for differences in deploy + Testing deploy modes: [Initial, Delayed] "Initial" is a deploy where the webapps exist in the monitored directory at startup. "Delayed" is a deploy where the Server is already started when a new webapp is added to the monitored deployment directory. + Webapp types: [Unavailable: True, False] This is the WebAppContext.isThrowUnavailableOnStartupException setting. + New DeploymentManager Node[FAILED] to assign to webapps that fail the deployment during the "Delayed" deployment scenario. Useful as a binding for hooking into failed deployments. --- .../eclipse/jetty/deploy/AppLifeCycle.java | 4 + .../jetty/deploy/DeploymentManager.java | 11 + .../deploy/bindings/StandardStarter.java | 2 +- .../jetty/test/DeploymentErrorTest.java | 319 +++++++++++++----- .../deployerror/badapp-unavailable-false.xml | 2 +- .../resources/docroots/deployerror/badapp.xml | 2 +- 6 files changed, 253 insertions(+), 87 deletions(-) diff --git a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/AppLifeCycle.java b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/AppLifeCycle.java index 39749e8b037..61c696fcc36 100644 --- a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/AppLifeCycle.java +++ b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/AppLifeCycle.java @@ -74,6 +74,7 @@ public class AppLifeCycle extends Graph public static final String STARTED = "started"; public static final String STOPPING = "stopping"; public static final String UNDEPLOYING = "undeploying"; + public static final String FAILED = "failed"; private Map> lifecyclebindings = new HashMap>(); @@ -97,6 +98,9 @@ public class AppLifeCycle extends Graph // deployed -> undeployed addEdge(DEPLOYED,UNDEPLOYING); addEdge(UNDEPLOYING,UNDEPLOYED); + + // failed (unconnected) + addNode(new Node(FAILED)); } public void addBinding(AppLifeCycle.Binding binding) diff --git a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/DeploymentManager.java b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/DeploymentManager.java index 6c69f52ac6b..d5d031f5171 100644 --- a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/DeploymentManager.java +++ b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/DeploymentManager.java @@ -507,6 +507,17 @@ public class DeploymentManager extends ContainerLifeCycle catch (Throwable t) { LOG.warn("Unable to reach node goal: " + nodeName,t); + // migrate to FAILED node + Node failed = _lifecycle.getNodeByName(AppLifeCycle.FAILED); + appentry.setLifeCycleNode(failed); + try + { + _lifecycle.runBindings(failed, appentry.app, this); + } + catch (Throwable ignore) + { + // The runBindings failed for 'failed' node, no point doing anything else here. + } } } diff --git a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/StandardStarter.java b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/StandardStarter.java index b9289b8fb93..d9d7b0ce305 100644 --- a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/StandardStarter.java +++ b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/StandardStarter.java @@ -40,7 +40,7 @@ public class StandardStarter implements AppLifeCycle.Binding ContextHandler handler = app.getContextHandler(); - if (contexts.isRunning() && !handler.isRunning()) + if (contexts.isStarted() && handler.isStopped()) { // start the handler manually handler.start(); diff --git a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java index 63a684ed328..6dd6f7b9e34 100644 --- a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java +++ b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java @@ -18,26 +18,33 @@ package org.eclipse.jetty.test; -import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.notNullValue; import static org.hamcrest.Matchers.nullValue; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; +import java.io.File; +import java.io.IOException; import java.net.URI; import java.nio.file.Path; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.api.ContentResponse; import org.eclipse.jetty.deploy.App; +import org.eclipse.jetty.deploy.AppLifeCycle; import org.eclipse.jetty.deploy.DeploymentManager; +import org.eclipse.jetty.deploy.graph.Node; import org.eclipse.jetty.deploy.providers.WebAppProvider; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.HttpStatus; +import org.eclipse.jetty.io.RuntimeIOException; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; @@ -45,89 +52,191 @@ import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.server.handler.ContextHandlerCollection; import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.server.handler.HandlerCollection; +import org.eclipse.jetty.toolchain.test.FS; +import org.eclipse.jetty.toolchain.test.IO; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; +import org.eclipse.jetty.util.log.StacklessLogging; import org.eclipse.jetty.util.resource.PathResource; import org.eclipse.jetty.webapp.AbstractConfiguration; import org.eclipse.jetty.webapp.Configuration; import org.eclipse.jetty.webapp.WebAppContext; -import org.junit.AfterClass; -import org.junit.BeforeClass; +import org.junit.After; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.rules.TestName; public class DeploymentErrorTest { - private static Server server; - private static DeploymentManager deploymentManager; - private static ContextHandlerCollection contexts; + @Rule + public ExpectedException expectedException = ExpectedException.none(); - @BeforeClass - public static void setUpServer() + @Rule + public TestName testname = new TestName(); + + private StacklessLogging stacklessLogging; + private Server server; + private DeploymentManager deploymentManager; + private ContextHandlerCollection contexts; + + public Path startServer(Consumer docrootSetupConsumer) throws Exception { - try + stacklessLogging = new StacklessLogging(WebAppContext.class, DeploymentManager.class, NoClassDefFoundError.class); + + server = new Server(); + ServerConnector connector = new ServerConnector(server); + connector.setPort(0); + server.addConnector(connector); + + // Empty contexts collections + contexts = new ContextHandlerCollection(); + + // Deployment Manager + deploymentManager = new DeploymentManager(); + deploymentManager.setContexts(contexts); + Path testClasses = MavenTestingUtils.getTargetPath("test-classes"); + System.setProperty("maven.test.classes", testClasses.toAbsolutePath().toString()); + + Path docroots = MavenTestingUtils.getTargetTestingPath(DeploymentErrorTest.class, testname.getMethodName()); + FS.ensureEmpty(docroots); + + if (docrootSetupConsumer != null) { - server = new Server(); - ServerConnector connector = new ServerConnector(server); - connector.setPort(0); - server.addConnector(connector); - - // Empty contexts collections - contexts = new ContextHandlerCollection(); - - // Deployment Manager - deploymentManager = new DeploymentManager(); - deploymentManager.setContexts(contexts); - Path testClasses = MavenTestingUtils.getTargetPath("test-classes"); - System.setProperty("maven.test.classes", testClasses.toAbsolutePath().toString()); - Path docroots = MavenTestingUtils.getTestResourcePathDir("docroots"); - System.setProperty("test.docroots", docroots.toAbsolutePath().toString()); - WebAppProvider appProvider = new WebAppProvider(); - appProvider.setMonitoredDirResource(new PathResource(docroots.resolve("deployerror"))); - appProvider.setScanInterval(1); - deploymentManager.addAppProvider(appProvider); - server.addBean(deploymentManager); - - // Server handlers - HandlerCollection handlers = new HandlerCollection(); - handlers.setHandlers(new Handler[] - {contexts, new DefaultHandler() }); - server.setHandler(handlers); - - // Setup Configurations - Configuration.ClassList classlist = Configuration.ClassList - .setServerDefault(server); - classlist.addAfter( - "org.eclipse.jetty.webapp.FragmentConfiguration", - "org.eclipse.jetty.plus.webapp.EnvConfiguration", - "org.eclipse.jetty.plus.webapp.PlusConfiguration"); - classlist.addBefore( - "org.eclipse.jetty.webapp.JettyWebXmlConfiguration", - "org.eclipse.jetty.annotations.AnnotationConfiguration"); - - // Tracking Config - classlist.addBefore("org.eclipse.jetty.webapp.WebInfConfiguration", - TrackedConfiguration.class.getName()); - - server.start(); - } - catch (final Exception e) - { - e.printStackTrace(); + docrootSetupConsumer.accept(docroots); } + + System.setProperty("test.docroots", docroots.toAbsolutePath().toString()); + WebAppProvider appProvider = new WebAppProvider(); + appProvider.setMonitoredDirResource(new PathResource(docroots)); + appProvider.setScanInterval(1); + deploymentManager.addAppProvider(appProvider); + server.addBean(deploymentManager); + + // Server handlers + HandlerCollection handlers = new HandlerCollection(); + handlers.setHandlers(new Handler[] + {contexts, new DefaultHandler()}); + server.setHandler(handlers); + + // Setup Configurations + Configuration.ClassList classlist = Configuration.ClassList + .setServerDefault(server); + classlist.addAfter( + "org.eclipse.jetty.webapp.FragmentConfiguration", + "org.eclipse.jetty.plus.webapp.EnvConfiguration", + "org.eclipse.jetty.plus.webapp.PlusConfiguration"); + classlist.addBefore( + "org.eclipse.jetty.webapp.JettyWebXmlConfiguration", + "org.eclipse.jetty.annotations.AnnotationConfiguration"); + + // Tracking Config + classlist.addBefore("org.eclipse.jetty.webapp.WebInfConfiguration", + TrackedConfiguration.class.getName()); + + server.start(); + return docroots; } - @AfterClass - public static void tearDownServer() throws Exception + @After + public void tearDownServer() throws Exception { + if (stacklessLogging != null) + stacklessLogging.close(); server.stop(); } - @Test - public void testErrorDeploy_ThrowUnavailableTrue() throws Exception + private void copyBadApp(String sourceXml, Path docroots) { + try + { + File deployErrorSrc = MavenTestingUtils.getTestResourceDir("docroots/deployerror"); + IO.copy(new File(deployErrorSrc, sourceXml), docroots.resolve("badapp.xml").toFile()); + File badappDir = new File(deployErrorSrc, "badapp"); + File badappDest = docroots.resolve("badapp").toFile(); + FS.ensureDirExists(badappDest); + IO.copyDir(badappDir, badappDest); + } + catch (IOException e) + { + throw new RuntimeIOException(e); + } + } + + /** + * Test of a server startup, where a DeploymentManager has a WebAppProvider pointing + * to a directory that already has a webapp that will deploy with an error. + * The webapp is a WebAppContext with {@code throwUnavailableOnStartupException=true;}. + */ + @Test + public void testInitial_BadApp_UnavailableTrue() throws Exception + { + expectedException.expect(NoClassDefFoundError.class); + startServer(docroots -> copyBadApp("badapp.xml", docroots)); + + // The above should have prevented the server from starting. + assertThat("server.isRunning", server.isRunning(), is(false)); + } + + /** + * Test of a server startup, where a DeploymentManager has a WebAppProvider pointing + * to a directory that already has a webapp that will deploy with an error. + * The webapp is a WebAppContext with {@code throwUnavailableOnStartupException=false;}. + */ + @Test + public void testInitial_BadApp_UnavailableFalse() throws Exception + { + startServer(docroots -> copyBadApp("badapp-unavailable-false.xml", docroots)); + List apps = new ArrayList<>(); apps.addAll(deploymentManager.getApps()); - assertThat("Apps tracked", apps.size(), is(2)); + assertThat("Apps tracked", apps.size(), is(1)); + String contextPath = "/badapp-uaf"; + App app = findApp(contextPath, apps); + ContextHandler context = app.getContextHandler(); + assertThat("ContextHandler.isStarted", context.isStarted(), is(true)); + assertThat("ContextHandler.isFailed", context.isFailed(), is(false)); + assertThat("ContextHandler.isAvailable", context.isAvailable(), is(false)); + WebAppContext webapp = (WebAppContext) context; + TrackedConfiguration trackedConfiguration = null; + for (Configuration webappConfig : webapp.getConfigurations()) + { + if (webappConfig instanceof TrackedConfiguration) + trackedConfiguration = (TrackedConfiguration) webappConfig; + } + assertThat("webapp TrackedConfiguration exists", trackedConfiguration, notNullValue()); + assertThat("trackedConfig.preConfigureCount", trackedConfiguration.preConfigureCounts.get(contextPath), is(1)); + assertThat("trackedConfig.configureCount", trackedConfiguration.configureCounts.get(contextPath), is(1)); + // NOTE: Failure occurs during configure, so postConfigure never runs. + assertThat("trackedConfig.postConfigureCount", trackedConfiguration.postConfigureCounts.get(contextPath), nullValue()); + + assertHttpState(contextPath, HttpStatus.SERVICE_UNAVAILABLE_503); + } + + /** + * Test of a server startup, where a DeploymentManager has a WebAppProvider pointing + * to a directory that already has no initial webapps that will deploy. + * A webapp is added (by filesystem copies) into the monitored docroot. + * The webapp will have a deployment error. + * The webapp is a WebAppContext with {@code throwUnavailableOnStartupException=true;}. + */ + @Test + public void testDelayedAdd_BadApp_UnavailableTrue() throws Exception + { + Path docroots = startServer(null); + String contextPath = "/badapp"; + AppLifeCycleTrackingBinding startTracking = new AppLifeCycleTrackingBinding(contextPath); + DeploymentManager deploymentManager = server.getBean(DeploymentManager.class); + deploymentManager.addLifeCycleBinding(startTracking); + + copyBadApp("badapp.xml", docroots); + + // Wait for deployment manager to do its thing + assertThat("AppLifeCycle.FAILED event occurred", startTracking.failedLatch.await(3, TimeUnit.SECONDS), is(true)); + + List apps = new ArrayList<>(); + apps.addAll(deploymentManager.getApps()); + assertThat("Apps tracked", apps.size(), is(1)); App app = findApp(contextPath, apps); ContextHandler context = app.getContextHandler(); assertThat("ContextHandler.isStarted", context.isStarted(), is(false)); @@ -135,9 +244,9 @@ public class DeploymentErrorTest assertThat("ContextHandler.isAvailable", context.isAvailable(), is(false)); WebAppContext webapp = (WebAppContext) context; TrackedConfiguration trackedConfiguration = null; - for(Configuration webappConfig: webapp.getConfigurations()) + for (Configuration webappConfig : webapp.getConfigurations()) { - if(webappConfig instanceof TrackedConfiguration) + if (webappConfig instanceof TrackedConfiguration) trackedConfiguration = (TrackedConfiguration) webappConfig; } assertThat("webapp TrackedConfiguration exists", trackedConfiguration, notNullValue()); @@ -149,13 +258,31 @@ public class DeploymentErrorTest assertHttpState(contextPath, HttpStatus.NOT_FOUND_404); } + /** + * Test of a server startup, where a DeploymentManager has a WebAppProvider pointing + * to a directory that already has no initial webapps that will deploy. + * A webapp is added (by filesystem copies) into the monitored docroot. + * The webapp will have a deployment error. + * The webapp is a WebAppContext with {@code throwUnavailableOnStartupException=false;}. + */ @Test - public void testErrorDeploy_ThrowUnavailableFalse() throws Exception + public void testDelayedAdd_BadApp_UnavailableFalse() throws Exception { + Path docroots = startServer(null); + + String contextPath = "/badapp-uaf"; + AppLifeCycleTrackingBinding startTracking = new AppLifeCycleTrackingBinding(contextPath); + DeploymentManager deploymentManager = server.getBean(DeploymentManager.class); + deploymentManager.addLifeCycleBinding(startTracking); + + copyBadApp("badapp-unavailable-false.xml", docroots); + + // Wait for deployment manager to do its thing + startTracking.startedLatch.await(3, TimeUnit.SECONDS); + List apps = new ArrayList<>(); apps.addAll(deploymentManager.getApps()); - assertThat("Apps tracked", apps.size(), is(2)); - String contextPath = "/badapp-uaf"; + assertThat("Apps tracked", apps.size(), is(1)); App app = findApp(contextPath, apps); ContextHandler context = app.getContextHandler(); assertThat("ContextHandler.isStarted", context.isStarted(), is(true)); @@ -163,9 +290,9 @@ public class DeploymentErrorTest assertThat("ContextHandler.isAvailable", context.isAvailable(), is(false)); WebAppContext webapp = (WebAppContext) context; TrackedConfiguration trackedConfiguration = null; - for(Configuration webappConfig: webapp.getConfigurations()) + for (Configuration webappConfig : webapp.getConfigurations()) { - if(webappConfig instanceof TrackedConfiguration) + if (webappConfig instanceof TrackedConfiguration) trackedConfiguration = (TrackedConfiguration) webappConfig; } assertThat("webapp TrackedConfiguration exists", trackedConfiguration, notNullValue()); @@ -193,21 +320,6 @@ public class DeploymentErrorTest } } - @Test - public void testContextHandlerCollection() - { - Handler handlers[] = contexts.getHandlers(); - assertThat("ContextHandlerCollection.Handlers.length", handlers.length, is(2)); - - // Verify that both handlers are unavailable - for(Handler handler: handlers) - { - assertThat("Handler", handler, instanceOf(ContextHandler.class)); - ContextHandler contextHandler = (ContextHandler) handler; - assertThat("ContextHandler.isAvailable", contextHandler.isAvailable(), is(false)); - } - } - private App findApp(String contextPath, List apps) { for (App app : apps) @@ -227,7 +339,7 @@ public class DeploymentErrorTest private void incrementCount(WebAppContext context, Map contextCounts) { Integer count = contextCounts.get(context.getContextPath()); - if(count == null) + if (count == null) { count = new Integer(0); } @@ -253,4 +365,43 @@ public class DeploymentErrorTest incrementCount(context, postConfigureCounts); } } + + public static class AppLifeCycleTrackingBinding implements AppLifeCycle.Binding + { + public final CountDownLatch startingLatch = new CountDownLatch(1); + public final CountDownLatch startedLatch = new CountDownLatch(1); + public final CountDownLatch failedLatch = new CountDownLatch(1); + private final String expectedContextPath; + + public AppLifeCycleTrackingBinding(String expectedContextPath) + { + this.expectedContextPath = expectedContextPath; + } + + @Override + public String[] getBindingTargets() + { + return new String[]{AppLifeCycle.STARTING, AppLifeCycle.STARTED, AppLifeCycle.FAILED}; + } + + @Override + public void processBinding(Node node, App app) + { + if (app.getContextPath().equalsIgnoreCase(expectedContextPath)) + { + if (node.getName().equalsIgnoreCase(AppLifeCycle.STARTING)) + { + startingLatch.countDown(); + } + else if (node.getName().equalsIgnoreCase(AppLifeCycle.STARTED)) + { + startedLatch.countDown(); + } + else if (node.getName().equalsIgnoreCase(AppLifeCycle.FAILED)) + { + failedLatch.countDown(); + } + } + } + } } diff --git a/tests/test-integration/src/test/resources/docroots/deployerror/badapp-unavailable-false.xml b/tests/test-integration/src/test/resources/docroots/deployerror/badapp-unavailable-false.xml index 382e5cbc0dd..162802692d5 100644 --- a/tests/test-integration/src/test/resources/docroots/deployerror/badapp-unavailable-false.xml +++ b/tests/test-integration/src/test/resources/docroots/deployerror/badapp-unavailable-false.xml @@ -3,7 +3,7 @@ /badapp-uaf - /deployerror/badapp/ + /badapp/ false diff --git a/tests/test-integration/src/test/resources/docroots/deployerror/badapp.xml b/tests/test-integration/src/test/resources/docroots/deployerror/badapp.xml index d638c5528bf..529424cc124 100644 --- a/tests/test-integration/src/test/resources/docroots/deployerror/badapp.xml +++ b/tests/test-integration/src/test/resources/docroots/deployerror/badapp.xml @@ -3,7 +3,7 @@ /badapp - /deployerror/badapp/ + /badapp/ true From 0fc78e49241a2bdda90007d9afad06b1a8aae32c Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Wed, 31 Jan 2018 14:11:49 -0600 Subject: [PATCH 012/134] Issue #1602 - Applying requested change --- .../main/java/org/eclipse/jetty/deploy/DeploymentManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/DeploymentManager.java b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/DeploymentManager.java index d5d031f5171..91f53c53b01 100644 --- a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/DeploymentManager.java +++ b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/DeploymentManager.java @@ -516,7 +516,8 @@ public class DeploymentManager extends ContainerLifeCycle } catch (Throwable ignore) { - // The runBindings failed for 'failed' node, no point doing anything else here. + // The runBindings failed for 'failed' node + LOG.ignore(ignore); } } } From bd24762d013327b514e309134e9ca01f35868196 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 1 Feb 2018 10:40:13 +1000 Subject: [PATCH 013/134] change failsafe plugin version to fix maven plugin its #2170 Signed-off-by: olivier lamy --- jetty-maven-plugin/pom.xml | 2 ++ .../src/it/jetty-run-war-exploded-mojo-it/invoker.properties | 2 +- .../jetty-simple-webapp/pom.xml | 4 ++-- .../src/it/jetty-run-war-mojo-it/invoker.properties | 2 +- .../src/it/jetty-run-war-mojo-it/jetty-simple-webapp/pom.xml | 4 ++-- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml index 7f6f59673de..00933bfe44f 100644 --- a/jetty-maven-plugin/pom.xml +++ b/jetty-maven-plugin/pom.xml @@ -13,6 +13,7 @@ 3.5.0 3.5 ${project.groupId}.maven.plugin + 2.20.1 false FOOBEER @@ -224,6 +225,7 @@ ${jetty.stopKey} ${jetty.stopPort} ${jetty.runPort} + ${surefireVersion} clean diff --git a/jetty-maven-plugin/src/it/jetty-run-war-exploded-mojo-it/invoker.properties b/jetty-maven-plugin/src/it/jetty-run-war-exploded-mojo-it/invoker.properties index 161dd58f0af..b8a016f5093 100644 --- a/jetty-maven-plugin/src/it/jetty-run-war-exploded-mojo-it/invoker.properties +++ b/jetty-maven-plugin/src/it/jetty-run-war-exploded-mojo-it/invoker.properties @@ -1,2 +1,2 @@ -invoker.goals = verify +invoker.goals = verify -V #test-compile failsafe:integration-test \ No newline at end of file diff --git a/jetty-maven-plugin/src/it/jetty-run-war-exploded-mojo-it/jetty-simple-webapp/pom.xml b/jetty-maven-plugin/src/it/jetty-run-war-exploded-mojo-it/jetty-simple-webapp/pom.xml index 2cb58793d49..3b433d1d6a2 100644 --- a/jetty-maven-plugin/src/it/jetty-run-war-exploded-mojo-it/jetty-simple-webapp/pom.xml +++ b/jetty-maven-plugin/src/it/jetty-run-war-exploded-mojo-it/jetty-simple-webapp/pom.xml @@ -64,7 +64,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.20 + @surefireVersion@ true @@ -75,7 +75,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 2.20 + @surefireVersion@ ${jetty.port.file} diff --git a/jetty-maven-plugin/src/it/jetty-run-war-mojo-it/invoker.properties b/jetty-maven-plugin/src/it/jetty-run-war-mojo-it/invoker.properties index 161dd58f0af..b8a016f5093 100644 --- a/jetty-maven-plugin/src/it/jetty-run-war-mojo-it/invoker.properties +++ b/jetty-maven-plugin/src/it/jetty-run-war-mojo-it/invoker.properties @@ -1,2 +1,2 @@ -invoker.goals = verify +invoker.goals = verify -V #test-compile failsafe:integration-test \ No newline at end of file diff --git a/jetty-maven-plugin/src/it/jetty-run-war-mojo-it/jetty-simple-webapp/pom.xml b/jetty-maven-plugin/src/it/jetty-run-war-mojo-it/jetty-simple-webapp/pom.xml index ea1c1b8f7e8..7126b33630b 100644 --- a/jetty-maven-plugin/src/it/jetty-run-war-mojo-it/jetty-simple-webapp/pom.xml +++ b/jetty-maven-plugin/src/it/jetty-run-war-mojo-it/jetty-simple-webapp/pom.xml @@ -66,7 +66,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.20 + @surefireVersion@ true @@ -77,7 +77,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 2.20 + @surefireVersion@ ${jetty.port.file} From 51c895db0616857f2594993403e8137d136ed638 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 1 Feb 2018 11:00:25 +1000 Subject: [PATCH 014/134] #2170 add a basic README for Maven integration tests Signed-off-by: olivier lamy --- jetty-maven-plugin/README_INTEGRATION_TEST.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 jetty-maven-plugin/README_INTEGRATION_TEST.md diff --git a/jetty-maven-plugin/README_INTEGRATION_TEST.md b/jetty-maven-plugin/README_INTEGRATION_TEST.md new file mode 100644 index 00000000000..81a8bb381a0 --- /dev/null +++ b/jetty-maven-plugin/README_INTEGRATION_TEST.md @@ -0,0 +1,24 @@ +Running Maven Integration tests +===================== +The project contains a set of Maven Integration test projects. +They are running using the Maven Invoker plugin which starts an external Maven build to run the project and some post build check. +More details [http://maven.apache.org/plugins/maven-invoker-plugin/]. + +Integration tests location +-------------------- +Test projects are located within the folder: src/it + +Running the tests +-------------------- +As they can be long to run, the tests do not run per default. So to run them you must activate a profile using the command line argument: ```-Prun-its``` + +Running single test +-------------------- +You can run single or set of test as well using the command line argument: ```-Dinvoker.test=jetty-run-mojo-it,jetty-run-war*-it,!jetty-run-distro*``` +The parameter supports pattern and exclusion with ! + +Running Logs +-------------------- +The output of each Maven build will be located in /target/it/${project-name}/build.log + + From f52f1cee2c2d362c1f7081f5fc88f81ce5a64967 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 1 Feb 2018 11:24:31 +1000 Subject: [PATCH 015/134] add multiple jdks build Signed-off-by: olivier lamy --- Jenkinsfile | 316 +++++++++++++++++++++++++++------------------------- 1 file changed, 162 insertions(+), 154 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 3293a6aa47c..f4f93c8e51e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,165 +1,173 @@ #!groovy -node { - // System Dependent Locations - def mvntool = tool name: 'maven3', type: 'hudson.tasks.Maven$MavenInstallation' - def jdktool = tool name: 'jdk8', type: 'hudson.model.JDK' - - // Environment - List mvnEnv = ["PATH+MVN=${mvntool}/bin", "PATH+JDK=${jdktool}/bin", "JAVA_HOME=${jdktool}/", "MAVEN_HOME=${mvntool}"] - mvnEnv.add("MAVEN_OPTS=-Xms256m -Xmx1024m -Djava.awt.headless=true") - - try - { - stage('Checkout') { - checkout scm - } - } catch (Exception e) { - notifyBuild("Checkout Failure") - throw e - } - - try - { - stage('Compile') { - withEnv(mvnEnv) { - timeout(time: 15, unit: 'MINUTES') { - sh "mvn -B clean install -Dtest=None" - } - } - } - } catch(Exception e) { - notifyBuild("Compile Failure") - throw e - } - - try - { - stage('Javadoc') { - withEnv(mvnEnv) { - timeout(time: 20, unit: 'MINUTES') { - sh "mvn -B javadoc:javadoc" - } - } - } - } catch(Exception e) { - notifyBuild("Javadoc Failure") - throw e - } - - try - { - stage('Test') { - withEnv(mvnEnv) { - timeout(time: 90, unit: 'MINUTES') { - // Run test phase / ignore test failures - sh "mvn -B install -Dmaven.test.failure.ignore=true -Prun-its" - // Report failures in the jenkins UI - step([$class: 'JUnitResultArchiver', - testResults: '**/target/surefire-reports/TEST-*.xml']) - // Collect up the jacoco execution results - def jacocoExcludes = - // build tools - "**/org/eclipse/jetty/ant/**" + - ",**/org/eclipse/jetty/maven/**" + - ",**/org/eclipse/jetty/jspc/**" + - // example code / documentation - ",**/org/eclipse/jetty/embedded/**" + - ",**/org/eclipse/jetty/asyncrest/**" + - ",**/org/eclipse/jetty/demo/**" + - // special environments / late integrations - ",**/org/eclipse/jetty/gcloud/**" + - ",**/org/eclipse/jetty/infinispan/**" + - ",**/org/eclipse/jetty/osgi/**" + - ",**/org/eclipse/jetty/spring/**" + - ",**/org/eclipse/jetty/http/spi/**" + - // test classes - ",**/org/eclipse/jetty/tests/**" + - ",**/org/eclipse/jetty/test/**"; - step([$class: 'JacocoPublisher', - inclusionPattern: '**/org/eclipse/jetty/**/*.class', - exclusionPattern: jacocoExcludes, - execPattern: '**/target/jacoco.exec', - classPattern: '**/target/classes', - sourcePattern: '**/src/main/java']) - // Report on Maven and Javadoc warnings - step([$class: 'WarningsPublisher', - consoleParsers: [ - [parserName: 'Maven'], - [parserName: 'JavaDoc'], - [parserName: 'JavaC'] - ]]) - } - if(isUnstable()) - { - notifyBuild("Unstable / Test Errors") - } - } - } - } catch(Exception e) { - notifyBuild("Test Failure") - throw e - } - - try - { - stage 'Compact3' - - dir("aggregates/jetty-all-compact3") { - withEnv(mvnEnv) { - sh "mvn -B -Pcompact3 clean install" - } - } - } catch(Exception e) { - notifyBuild("Compact3 Failure") - throw e - } -} - -// True if this build is part of the "active" branches -// for Jetty. -def isActiveBranch() +def jdks = ["jdk8", "jdk9"] +for (def jdk in jdks) { - def branchName = "${env.BRANCH_NAME}" - return ( branchName == "master" || - branchName.startsWith("jetty-") ); -} -// Test if the Jenkins Pipeline or Step has marked the -// current build as unstable -def isUnstable() -{ - return currentBuild.result == "UNSTABLE" -} + node { + // System Dependent Locations + def mvntool = tool name: 'maven3', type: 'hudson.tasks.Maven$MavenInstallation' + def jdktool = tool name: '${jdk}', type: 'hudson.model.JDK' -// Send a notification about the build status -def notifyBuild(String buildStatus) -{ - if ( !isActiveBranch() ) - { - // don't send notifications on transient branches - return + // Environment + List mvnEnv = ["PATH+MVN=${mvntool}/bin", "PATH+JDK=${jdktool}/bin", "JAVA_HOME=${jdktool}/", "MAVEN_HOME=${mvntool}"] + mvnEnv.add( "MAVEN_OPTS=-Xms256m -Xmx1024m -Djava.awt.headless=true" ) + + try + { + stage( 'Checkout' ) { + checkout scm + } + } catch ( Exception e ) { + notifyBuild( "Checkout Failure" ) + throw e + } + + try + { + stage( 'Compile' ) { + withEnv( mvnEnv ) { + timeout( time: 15, unit: 'MINUTES' ) { + sh "mvn -B clean install -Dtest=None" + } + } + } + } + catch ( Exception e ) + { + notifyBuild( "Compile Failure" ) + throw e + } + + try + { + stage( 'Javadoc' ) { + withEnv( mvnEnv ) { + timeout( time: 20, unit: 'MINUTES' ) { + sh "mvn -B javadoc:javadoc" + } + } + } + } + catch ( Exception e ) + { + notifyBuild( "Javadoc Failure" ) + throw e + } + + try + { + stage( 'Test' ) { + withEnv( mvnEnv ) { + timeout( time: 90, unit: 'MINUTES' ) { + // Run test phase / ignore test failures + sh "mvn -B install -Dmaven.test.failure.ignore=true -Prun-its" + // Report failures in the jenkins UI + step( [$class : 'JUnitResultArchiver', + testResults: '**/target/surefire-reports/TEST-*.xml'] ) + // Collect up the jacoco execution results + def jacocoExcludes = + // build tools + "**/org/eclipse/jetty/ant/**" + + ",**/org/eclipse/jetty/maven/**" + + ",**/org/eclipse/jetty/jspc/**" + + // example code / documentation + ",**/org/eclipse/jetty/embedded/**" + + ",**/org/eclipse/jetty/asyncrest/**" + + ",**/org/eclipse/jetty/demo/**" + + // special environments / late integrations + ",**/org/eclipse/jetty/gcloud/**" + + ",**/org/eclipse/jetty/infinispan/**" + + ",**/org/eclipse/jetty/osgi/**" + + ",**/org/eclipse/jetty/spring/**" + + ",**/org/eclipse/jetty/http/spi/**" + + // test classes + ",**/org/eclipse/jetty/tests/**" + + ",**/org/eclipse/jetty/test/**"; + step([$clas s: 'JacocoPublisher', + inclusionPattern: '**/org/eclipse/jetty/**/*.class', + exclusionPattern: jacocoExcludes, + execPatter n: '**/target/jacoco.exec', + classPatter n: '**/target/classes', + sourcePatter n: '**/src/main/java']) + // Report on Maven and Javadoc warnings + step([$clas s: 'WarningsPublisher', + consoleParsers: [ + [parserName: 'Maven'], + [parserName: 'JavaDoc'], + [parserName: 'JavaC'] + ]]) + } + i f (isUnstable()) + { + notifyBuild( "Unstable / Test Errors ") + } + } + } + } catc h (Exception e) + { + notifyBuild( "Test Failure" ) + throw e + } + + try + { + stage 'Compact3' + + dir( "aggregates/jetty-all-compact3" ) { + withEnv( mvnEnv ) { + sh "mvn -B -Pcompact3 clean install" + } + } + } + catch ( Exception e ) + { + notifyBuild( "Compact3 Failure" ) + throw e + } } - // default the value - buildStatus = buildStatus ?: "UNKNOWN" + // True if this build is part of the "active" branches + // for Jetty. + def isActiveBranch() + { + def branchName = "${env.BRANCH_NAME}" + return ( branchName == "master" || branchName.startsWith( "jetty-" ) ); + } - def email = "${env.EMAILADDRESS}" - def summary = "${env.JOB_NAME}#${env.BUILD_NUMBER} - ${buildStatus}" - def detail = """

Job: ${env.JOB_NAME} [#${env.BUILD_NUMBER}]

-

${buildStatus}

- - - - -
Build${env.BUILD_URL}
Console${env.BUILD_URL}console
Test Report${env.BUILD_URL}testReport/
- """ + // Test if the Jenkins Pipeline or Step has marked the + // current build as unstable + def isUnstable() + { + return currentBuild.result == "UNSTABLE" + } - emailext ( - to: email, - subject: summary, - body: detail - ) + // Send a notification about the build status + def notifyBuild( String buildStatus ) + { + if ( !isActiveBranch() ) + { + // don't send notifications on transient branches + return + } + + // default the value + buildStatus = buildStatus ?: "UNKNOWN" + + def email = "${env.EMAILADDRESS}" + def summary = "${env.JOB_NAME}#${env.BUILD_NUMBER} - ${buildStatus}" + def detail = """

Job: ${env.JOB_NAME} [#${env.BUILD_NUMBER}]

+

${buildStatus}

+ + + + +
Build${env.BUILD_URL}
Console${env.BUILD_URL}console
Test Report${env.BUILD_URL}testReport/
+ """ + + emailext( to: email, + subject: summary, + body: detail ) + } } - // vim: et:ts=2:sw=2:ft=groovy From b558ebb812a2deb7c07a7a07bdd37c792674553a Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 1 Feb 2018 11:44:55 +1000 Subject: [PATCH 016/134] fix failing formatting from ide Signed-off-by: olivier lamy --- Jenkinsfile | 131 +++++++++++++++++++++++++--------------------------- 1 file changed, 63 insertions(+), 68 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index f4f93c8e51e..7ae9939d14b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,8 +1,7 @@ -#!groovy +#!groovy def jdks = ["jdk8", "jdk9"] -for (def jdk in jdks) -{ +for (def jdk in jdks) { node { // System Dependent Locations @@ -11,102 +10,97 @@ for (def jdk in jdks) // Environment List mvnEnv = ["PATH+MVN=${mvntool}/bin", "PATH+JDK=${jdktool}/bin", "JAVA_HOME=${jdktool}/", "MAVEN_HOME=${mvntool}"] - mvnEnv.add( "MAVEN_OPTS=-Xms256m -Xmx1024m -Djava.awt.headless=true" ) + mvnEnv.add("MAVEN_OPTS=-Xms256m -Xmx1024m -Djava.awt.headless=true") try { - stage( 'Checkout' ) { + stage('Checkout') { checkout scm } - } catch ( Exception e ) { - notifyBuild( "Checkout Failure" ) + } catch (Exception e) { + notifyBuild("Checkout Failure") throw e } try { - stage( 'Compile' ) { - withEnv( mvnEnv ) { - timeout( time: 15, unit: 'MINUTES' ) { + stage('Compile') { + withEnv(mvnEnv) { + timeout(time: 15, unit: 'MINUTES') { sh "mvn -B clean install -Dtest=None" } } } - } - catch ( Exception e ) - { - notifyBuild( "Compile Failure" ) + } catch(Exception e) { + notifyBuild("Compile Failure") throw e } try { - stage( 'Javadoc' ) { - withEnv( mvnEnv ) { - timeout( time: 20, unit: 'MINUTES' ) { + stage('Javadoc') { + withEnv(mvnEnv) { + timeout(time: 20, unit: 'MINUTES') { sh "mvn -B javadoc:javadoc" } } } - } - catch ( Exception e ) - { - notifyBuild( "Javadoc Failure" ) + } catch(Exception e) { + notifyBuild("Javadoc Failure") throw e } try { - stage( 'Test' ) { - withEnv( mvnEnv ) { - timeout( time: 90, unit: 'MINUTES' ) { + stage('Test') { + withEnv(mvnEnv) { + timeout(time: 90, unit: 'MINUTES') { // Run test phase / ignore test failures sh "mvn -B install -Dmaven.test.failure.ignore=true -Prun-its" // Report failures in the jenkins UI - step( [$class : 'JUnitResultArchiver', - testResults: '**/target/surefire-reports/TEST-*.xml'] ) + step([$class: 'JUnitResultArchiver', + testResults: '**/target/surefire-reports/TEST-*.xml']) // Collect up the jacoco execution results def jacocoExcludes = // build tools - "**/org/eclipse/jetty/ant/**" + - ",**/org/eclipse/jetty/maven/**" + - ",**/org/eclipse/jetty/jspc/**" + - // example code / documentation - ",**/org/eclipse/jetty/embedded/**" + - ",**/org/eclipse/jetty/asyncrest/**" + - ",**/org/eclipse/jetty/demo/**" + - // special environments / late integrations - ",**/org/eclipse/jetty/gcloud/**" + - ",**/org/eclipse/jetty/infinispan/**" + - ",**/org/eclipse/jetty/osgi/**" + - ",**/org/eclipse/jetty/spring/**" + - ",**/org/eclipse/jetty/http/spi/**" + - // test classes - ",**/org/eclipse/jetty/tests/**" + - ",**/org/eclipse/jetty/test/**"; - step([$clas s: 'JacocoPublisher', + "**/org/eclipse/jetty/ant/**" + + ",**/org/eclipse/jetty/maven/**" + + ",**/org/eclipse/jetty/jspc/**" + + // example code / documentation + ",**/org/eclipse/jetty/embedded/**" + + ",**/org/eclipse/jetty/asyncrest/**" + + ",**/org/eclipse/jetty/demo/**" + + // special environments / late integrations + ",**/org/eclipse/jetty/gcloud/**" + + ",**/org/eclipse/jetty/infinispan/**" + + ",**/org/eclipse/jetty/osgi/**" + + ",**/org/eclipse/jetty/spring/**" + + ",**/org/eclipse/jetty/http/spi/**" + + // test classes + ",**/org/eclipse/jetty/tests/**" + + ",**/org/eclipse/jetty/test/**"; + step([$class: 'JacocoPublisher', inclusionPattern: '**/org/eclipse/jetty/**/*.class', exclusionPattern: jacocoExcludes, - execPatter n: '**/target/jacoco.exec', - classPatter n: '**/target/classes', - sourcePatter n: '**/src/main/java']) + execPattern: '**/target/jacoco.exec', + classPattern: '**/target/classes', + sourcePattern: '**/src/main/java']) // Report on Maven and Javadoc warnings - step([$clas s: 'WarningsPublisher', + step([$class: 'WarningsPublisher', consoleParsers: [ - [parserName: 'Maven'], - [parserName: 'JavaDoc'], - [parserName: 'JavaC'] - ]]) + [parserName: 'Maven'], + [parserName: 'JavaDoc'], + [parserName: 'JavaC'] + ]]) } - i f (isUnstable()) + if(isUnstable()) { - notifyBuild( "Unstable / Test Errors ") + notifyBuild("Unstable / Test Errors") } } } - } catc h (Exception e) - { - notifyBuild( "Test Failure" ) + } catch(Exception e) { + notifyBuild("Test Failure") throw e } @@ -114,15 +108,13 @@ for (def jdk in jdks) { stage 'Compact3' - dir( "aggregates/jetty-all-compact3" ) { - withEnv( mvnEnv ) { + dir("aggregates/jetty-all-compact3") { + withEnv(mvnEnv) { sh "mvn -B -Pcompact3 clean install" } } - } - catch ( Exception e ) - { - notifyBuild( "Compact3 Failure" ) + } catch(Exception e) { + notifyBuild("Compact3 Failure") throw e } } @@ -132,7 +124,8 @@ for (def jdk in jdks) def isActiveBranch() { def branchName = "${env.BRANCH_NAME}" - return ( branchName == "master" || branchName.startsWith( "jetty-" ) ); + return ( branchName == "master" || + branchName.startsWith("jetty-") ); } // Test if the Jenkins Pipeline or Step has marked the @@ -143,7 +136,7 @@ for (def jdk in jdks) } // Send a notification about the build status - def notifyBuild( String buildStatus ) + def notifyBuild(String buildStatus) { if ( !isActiveBranch() ) { @@ -165,9 +158,11 @@ for (def jdk in jdks) """ - emailext( to: email, - subject: summary, - body: detail ) + emailext ( + to: email, + subject: summary, + body: detail + ) } } -// vim: et:ts=2:sw=2:ft=groovy +// vim: et:ts=2:sw=2:ft=groovy \ No newline at end of file From 127de228ef8f0b83916f58e34ecaa498b71944de Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 1 Feb 2018 11:46:35 +1000 Subject: [PATCH 017/134] fix failing formatting from ide Signed-off-by: olivier lamy --- Jenkinsfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 7ae9939d14b..0e38618575a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,6 +1,7 @@ - #!groovy + def jdks = ["jdk8", "jdk9"] + for (def jdk in jdks) { node { From 6ccf7cb9d25cde33cdaf72b7230605802dc04bf4 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 1 Feb 2018 11:48:13 +1000 Subject: [PATCH 018/134] move Method def outside of the loop Signed-off-by: olivier lamy --- Jenkinsfile | 69 ++++++++++++++++++++++++++++------------------------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 0e38618575a..e86f92f5099 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -120,37 +120,40 @@ for (def jdk in jdks) { } } - // True if this build is part of the "active" branches - // for Jetty. - def isActiveBranch() +} + + +// True if this build is part of the "active" branches +// for Jetty. +def isActiveBranch() +{ + def branchName = "${env.BRANCH_NAME}" + return ( branchName == "master" || + branchName.startsWith("jetty-") ); +} + +// Test if the Jenkins Pipeline or Step has marked the +// current build as unstable +def isUnstable() +{ + return currentBuild.result == "UNSTABLE" +} + +// Send a notification about the build status +def notifyBuild(String buildStatus) +{ + if ( !isActiveBranch() ) { - def branchName = "${env.BRANCH_NAME}" - return ( branchName == "master" || - branchName.startsWith("jetty-") ); + // don't send notifications on transient branches + return } - // Test if the Jenkins Pipeline or Step has marked the - // current build as unstable - def isUnstable() - { - return currentBuild.result == "UNSTABLE" - } + // default the value + buildStatus = buildStatus ?: "UNKNOWN" - // Send a notification about the build status - def notifyBuild(String buildStatus) - { - if ( !isActiveBranch() ) - { - // don't send notifications on transient branches - return - } - - // default the value - buildStatus = buildStatus ?: "UNKNOWN" - - def email = "${env.EMAILADDRESS}" - def summary = "${env.JOB_NAME}#${env.BUILD_NUMBER} - ${buildStatus}" - def detail = """

Job: ${env.JOB_NAME} [#${env.BUILD_NUMBER}]

+ def email = "${env.EMAILADDRESS}" + def summary = "${env.JOB_NAME}#${env.BUILD_NUMBER} - ${buildStatus}" + def detail = """

Job: ${env.JOB_NAME} [#${env.BUILD_NUMBER}]

${buildStatus}

@@ -159,11 +162,11 @@ for (def jdk in jdks) {
Build${env.BUILD_URL}
""" - emailext ( - to: email, - subject: summary, - body: detail - ) - } + emailext ( + to: email, + subject: summary, + body: detail + ) } + // vim: et:ts=2:sw=2:ft=groovy \ No newline at end of file From f9ec02b8bb626415e21b2e4e55f7f51ee320b966 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 1 Feb 2018 11:51:28 +1000 Subject: [PATCH 019/134] fix loop variable name Signed-off-by: olivier lamy --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index e86f92f5099..ef02ddd2c54 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -7,7 +7,7 @@ for (def jdk in jdks) { node { // System Dependent Locations def mvntool = tool name: 'maven3', type: 'hudson.tasks.Maven$MavenInstallation' - def jdktool = tool name: '${jdk}', type: 'hudson.model.JDK' + def jdktool = tool name: '$jdk', type: 'hudson.model.JDK' // Environment List mvnEnv = ["PATH+MVN=${mvntool}/bin", "PATH+JDK=${jdktool}/bin", "JAVA_HOME=${jdktool}/", "MAVEN_HOME=${mvntool}"] From 1f71485795c906bac1034fb47a82c355dac6c58a Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 1 Feb 2018 11:52:46 +1000 Subject: [PATCH 020/134] fix loop variable name Signed-off-by: olivier lamy --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index ef02ddd2c54..b7ed8e1f317 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -7,7 +7,7 @@ for (def jdk in jdks) { node { // System Dependent Locations def mvntool = tool name: 'maven3', type: 'hudson.tasks.Maven$MavenInstallation' - def jdktool = tool name: '$jdk', type: 'hudson.model.JDK' + def jdktool = tool name: $jdk, type: 'hudson.model.JDK' // Environment List mvnEnv = ["PATH+MVN=${mvntool}/bin", "PATH+JDK=${jdktool}/bin", "JAVA_HOME=${jdktool}/", "MAVEN_HOME=${mvntool}"] From 1aa5f84a20f1fd9a96962128193b629f0e1bb00a Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 1 Feb 2018 11:53:35 +1000 Subject: [PATCH 021/134] fix loop variable name Signed-off-by: olivier lamy --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index b7ed8e1f317..145a6ce035e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -7,7 +7,7 @@ for (def jdk in jdks) { node { // System Dependent Locations def mvntool = tool name: 'maven3', type: 'hudson.tasks.Maven$MavenInstallation' - def jdktool = tool name: $jdk, type: 'hudson.model.JDK' + def jdktool = tool name: "$jdk", type: 'hudson.model.JDK' // Environment List mvnEnv = ["PATH+MVN=${mvntool}/bin", "PATH+JDK=${jdktool}/bin", "JAVA_HOME=${jdktool}/", "MAVEN_HOME=${mvntool}"] From de91bdeb64163ce3b33298ac7eb6416ffc321b72 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 1 Feb 2018 11:58:54 +1000 Subject: [PATCH 022/134] display maven version informations Signed-off-by: olivier lamy --- Jenkinsfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 145a6ce035e..e213eb82d2c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -28,7 +28,7 @@ for (def jdk in jdks) { stage('Compile') { withEnv(mvnEnv) { timeout(time: 15, unit: 'MINUTES') { - sh "mvn -B clean install -Dtest=None" + sh "mvn -V -B clean install -Dtest=None" } } } @@ -42,7 +42,7 @@ for (def jdk in jdks) { stage('Javadoc') { withEnv(mvnEnv) { timeout(time: 20, unit: 'MINUTES') { - sh "mvn -B javadoc:javadoc" + sh "mvn -V -B javadoc:javadoc" } } } @@ -57,7 +57,7 @@ for (def jdk in jdks) { withEnv(mvnEnv) { timeout(time: 90, unit: 'MINUTES') { // Run test phase / ignore test failures - sh "mvn -B install -Dmaven.test.failure.ignore=true -Prun-its" + sh "mvn -V -B install -Dmaven.test.failure.ignore=true -Prun-its" // Report failures in the jenkins UI step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml']) @@ -111,7 +111,7 @@ for (def jdk in jdks) { dir("aggregates/jetty-all-compact3") { withEnv(mvnEnv) { - sh "mvn -B -Pcompact3 clean install" + sh "mvn -V -B -Pcompact3 clean install" } } } catch(Exception e) { From 5fbea380bfe82251aef3f848338efe5ced3dcd5b Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 1 Feb 2018 12:00:42 +1000 Subject: [PATCH 023/134] add jdk in mail notif failure Signed-off-by: olivier lamy --- Jenkinsfile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index e213eb82d2c..116c217af52 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -19,7 +19,7 @@ for (def jdk in jdks) { checkout scm } } catch (Exception e) { - notifyBuild("Checkout Failure") + notifyBuild("Checkout Failure", jdk) throw e } @@ -33,7 +33,7 @@ for (def jdk in jdks) { } } } catch(Exception e) { - notifyBuild("Compile Failure") + notifyBuild("Compile Failure", jdk) throw e } @@ -47,7 +47,7 @@ for (def jdk in jdks) { } } } catch(Exception e) { - notifyBuild("Javadoc Failure") + notifyBuild("Javadoc Failure", jdk) throw e } @@ -96,12 +96,12 @@ for (def jdk in jdks) { } if(isUnstable()) { - notifyBuild("Unstable / Test Errors") + notifyBuild("Unstable / Test Errors", jdk) } } } } catch(Exception e) { - notifyBuild("Test Failure") + notifyBuild("Test Failure", jdk) throw e } @@ -115,7 +115,7 @@ for (def jdk in jdks) { } } } catch(Exception e) { - notifyBuild("Compact3 Failure") + notifyBuild("Compact3 Failure", jdk) throw e } } @@ -140,7 +140,7 @@ def isUnstable() } // Send a notification about the build status -def notifyBuild(String buildStatus) +def notifyBuild(String buildStatus, String jdk) { if ( !isActiveBranch() ) { @@ -152,7 +152,7 @@ def notifyBuild(String buildStatus) buildStatus = buildStatus ?: "UNKNOWN" def email = "${env.EMAILADDRESS}" - def summary = "${env.JOB_NAME}#${env.BUILD_NUMBER} - ${buildStatus}" + def summary = "${env.JOB_NAME}#${env.BUILD_NUMBER} - ${buildStatus} with jdk ${jdk}" def detail = """

Job: ${env.JOB_NAME} [#${env.BUILD_NUMBER}]

${buildStatus}

From 99fc4ab4719f05ec08d5338db07b3293d41a30d8 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 1 Feb 2018 14:29:08 +1000 Subject: [PATCH 024/134] run in parallel Signed-off-by: olivier lamy --- Jenkinsfile | 197 +++++++++++++++++++++++++++------------------------- 1 file changed, 101 insertions(+), 96 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 116c217af52..0a5f6ae4fb1 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,125 +1,130 @@ #!groovy def jdks = ["jdk8", "jdk9"] - +def builds = [:] for (def jdk in jdks) { + builds[jdk] = getFullBuild( jdk ) + parallel builds +} - node { - // System Dependent Locations - def mvntool = tool name: 'maven3', type: 'hudson.tasks.Maven$MavenInstallation' - def jdktool = tool name: "$jdk", type: 'hudson.model.JDK' +def getFullBuild(jdk) { + return { + node { + // System Dependent Locations + def mvntool = tool name: 'maven3', type: 'hudson.tasks.Maven$MavenInstallation' + def jdktool = tool name: "$jdk", type: 'hudson.model.JDK' - // Environment - List mvnEnv = ["PATH+MVN=${mvntool}/bin", "PATH+JDK=${jdktool}/bin", "JAVA_HOME=${jdktool}/", "MAVEN_HOME=${mvntool}"] - mvnEnv.add("MAVEN_OPTS=-Xms256m -Xmx1024m -Djava.awt.headless=true") + // Environment + List mvnEnv = ["PATH+MVN=${mvntool}/bin", "PATH+JDK=${jdktool}/bin", "JAVA_HOME=${jdktool}/", "MAVEN_HOME=${mvntool}"] + mvnEnv.add("MAVEN_OPTS=-Xms256m -Xmx1024m -Djava.awt.headless=true") - try - { - stage('Checkout') { - checkout scm + try + { + stage('Checkout') { + checkout scm + } + } catch (Exception e) { + notifyBuild("Checkout Failure", jdk) + throw e } - } catch (Exception e) { - notifyBuild("Checkout Failure", jdk) - throw e - } - try - { - stage('Compile') { - withEnv(mvnEnv) { - timeout(time: 15, unit: 'MINUTES') { - sh "mvn -V -B clean install -Dtest=None" + try + { + stage('Compile') { + withEnv(mvnEnv) { + timeout(time: 15, unit: 'MINUTES') { + sh "mvn -V -B clean install -Dtest=None" + } } } + } catch(Exception e) { + notifyBuild("Compile Failure", jdk) + throw e } - } catch(Exception e) { - notifyBuild("Compile Failure", jdk) - throw e - } - try - { - stage('Javadoc') { - withEnv(mvnEnv) { - timeout(time: 20, unit: 'MINUTES') { - sh "mvn -V -B javadoc:javadoc" + try + { + stage('Javadoc') { + withEnv(mvnEnv) { + timeout(time: 20, unit: 'MINUTES') { + sh "mvn -V -B javadoc:javadoc" + } } } + } catch(Exception e) { + notifyBuild("Javadoc Failure", jdk) + throw e } - } catch(Exception e) { - notifyBuild("Javadoc Failure", jdk) - throw e - } - try - { - stage('Test') { - withEnv(mvnEnv) { - timeout(time: 90, unit: 'MINUTES') { - // Run test phase / ignore test failures - sh "mvn -V -B install -Dmaven.test.failure.ignore=true -Prun-its" - // Report failures in the jenkins UI - step([$class: 'JUnitResultArchiver', - testResults: '**/target/surefire-reports/TEST-*.xml']) - // Collect up the jacoco execution results - def jacocoExcludes = - // build tools - "**/org/eclipse/jetty/ant/**" + - ",**/org/eclipse/jetty/maven/**" + - ",**/org/eclipse/jetty/jspc/**" + - // example code / documentation - ",**/org/eclipse/jetty/embedded/**" + - ",**/org/eclipse/jetty/asyncrest/**" + - ",**/org/eclipse/jetty/demo/**" + - // special environments / late integrations - ",**/org/eclipse/jetty/gcloud/**" + - ",**/org/eclipse/jetty/infinispan/**" + - ",**/org/eclipse/jetty/osgi/**" + - ",**/org/eclipse/jetty/spring/**" + - ",**/org/eclipse/jetty/http/spi/**" + - // test classes - ",**/org/eclipse/jetty/tests/**" + - ",**/org/eclipse/jetty/test/**"; - step([$class: 'JacocoPublisher', - inclusionPattern: '**/org/eclipse/jetty/**/*.class', - exclusionPattern: jacocoExcludes, - execPattern: '**/target/jacoco.exec', - classPattern: '**/target/classes', - sourcePattern: '**/src/main/java']) - // Report on Maven and Javadoc warnings - step([$class: 'WarningsPublisher', - consoleParsers: [ - [parserName: 'Maven'], - [parserName: 'JavaDoc'], - [parserName: 'JavaC'] - ]]) - } - if(isUnstable()) - { - notifyBuild("Unstable / Test Errors", jdk) + try + { + stage('Test') { + withEnv(mvnEnv) { + timeout(time: 90, unit: 'MINUTES') { + // Run test phase / ignore test failures + sh "mvn -V -B install -Dmaven.test.failure.ignore=true -Prun-its" + // Report failures in the jenkins UI + step([$class: 'JUnitResultArchiver', + testResults: '**/target/surefire-reports/TEST-*.xml']) + // Collect up the jacoco execution results + def jacocoExcludes = + // build tools + "**/org/eclipse/jetty/ant/**" + + ",**/org/eclipse/jetty/maven/**" + + ",**/org/eclipse/jetty/jspc/**" + + // example code / documentation + ",**/org/eclipse/jetty/embedded/**" + + ",**/org/eclipse/jetty/asyncrest/**" + + ",**/org/eclipse/jetty/demo/**" + + // special environments / late integrations + ",**/org/eclipse/jetty/gcloud/**" + + ",**/org/eclipse/jetty/infinispan/**" + + ",**/org/eclipse/jetty/osgi/**" + + ",**/org/eclipse/jetty/spring/**" + + ",**/org/eclipse/jetty/http/spi/**" + + // test classes + ",**/org/eclipse/jetty/tests/**" + + ",**/org/eclipse/jetty/test/**"; + step([$class: 'JacocoPublisher', + inclusionPattern: '**/org/eclipse/jetty/**/*.class', + exclusionPattern: jacocoExcludes, + execPattern: '**/target/jacoco.exec', + classPattern: '**/target/classes', + sourcePattern: '**/src/main/java']) + // Report on Maven and Javadoc warnings + step([$class: 'WarningsPublisher', + consoleParsers: [ + [parserName: 'Maven'], + [parserName: 'JavaDoc'], + [parserName: 'JavaC'] + ]]) + } + if(isUnstable()) + { + notifyBuild("Unstable / Test Errors", jdk) + } } } + } catch(Exception e) { + notifyBuild("Test Failure", jdk) + throw e } - } catch(Exception e) { - notifyBuild("Test Failure", jdk) - throw e - } - try - { - stage 'Compact3' + try + { + stage 'Compact3' - dir("aggregates/jetty-all-compact3") { - withEnv(mvnEnv) { - sh "mvn -V -B -Pcompact3 clean install" + dir("aggregates/jetty-all-compact3") { + withEnv(mvnEnv) { + sh "mvn -V -B -Pcompact3 clean install" + } } + } catch(Exception e) { + notifyBuild("Compact3 Failure", jdk) + throw e } - } catch(Exception e) { - notifyBuild("Compact3 Failure", jdk) - throw e } } - } From 3fed7205fd4a75e657b42f30c054a65d53150247 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 1 Feb 2018 16:27:43 +1000 Subject: [PATCH 025/134] really parallel Signed-off-by: olivier lamy --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 0a5f6ae4fb1..a3a698b4c5b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -4,8 +4,8 @@ def jdks = ["jdk8", "jdk9"] def builds = [:] for (def jdk in jdks) { builds[jdk] = getFullBuild( jdk ) - parallel builds } +parallel builds def getFullBuild(jdk) { return { From 6b561361631fc45491dae38515bc688116b1e1b8 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 1 Feb 2018 18:15:59 +1000 Subject: [PATCH 026/134] fix compact 3 stage syntax Signed-off-by: olivier lamy --- Jenkinsfile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index a3a698b4c5b..cc210e0bf23 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -112,11 +112,12 @@ def getFullBuild(jdk) { try { - stage 'Compact3' + stage ('Compact3') { - dir("aggregates/jetty-all-compact3") { - withEnv(mvnEnv) { - sh "mvn -V -B -Pcompact3 clean install" + dir("aggregates/jetty-all-compact3") { + withEnv(mvnEnv) { + sh "mvn -V -B -Pcompact3 clean install" + } } } } catch(Exception e) { From e24b88b4337988197fdda45d14e8dda167eaabc8 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 1 Feb 2018 18:43:40 +1000 Subject: [PATCH 027/134] fix typo Signed-off-by: olivier lamy --- jetty-maven-plugin/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml index 00933bfe44f..e1674310d55 100644 --- a/jetty-maven-plugin/pom.xml +++ b/jetty-maven-plugin/pom.xml @@ -15,7 +15,7 @@ ${project.groupId}.maven.plugin 2.20.1 false - FOOBEER + FREEBEER From c46cb27d0c9ba501f9ffbc245bfd8303145a3a0c Mon Sep 17 00:00:00 2001 From: Jan Bartel Date: Thu, 1 Feb 2018 11:22:08 +0100 Subject: [PATCH 028/134] Issue #2114 Backport to jetty-9.2 --- .../org/eclipse/jetty/http/spi/JettyHttpServerProvider.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyHttpServerProvider.java b/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyHttpServerProvider.java index 2232bab091e..65acd613e3b 100644 --- a/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyHttpServerProvider.java +++ b/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyHttpServerProvider.java @@ -66,7 +66,8 @@ public class JettyHttpServerProvider extends HttpServerProvider } JettyHttpServer jettyHttpServer = new JettyHttpServer(server, shared); - jettyHttpServer.bind(addr, backlog); + if (addr != null) + jettyHttpServer.bind(addr, backlog); return jettyHttpServer; } From d838ee33d7c471f0280e9b49c73e82624414d0c0 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Sat, 3 Feb 2018 20:56:12 +1000 Subject: [PATCH 029/134] fix active branch name detection Signed-off-by: olivier lamy --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index cc210e0bf23..36e1a5e3402 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -135,7 +135,7 @@ def isActiveBranch() { def branchName = "${env.BRANCH_NAME}" return ( branchName == "master" || - branchName.startsWith("jetty-") ); + ( branchName.startsWith("jetty-") && branchName.endsWith(".x") ) ); } // Test if the Jenkins Pipeline or Step has marked the From 50910d9437df0a4ef07f2bbf5808d412965181a2 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Sun, 4 Feb 2018 09:45:25 +1000 Subject: [PATCH 030/134] add matrix with os Signed-off-by: olivier lamy --- Jenkinsfile | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 36e1a5e3402..1ba04f0f7c6 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,13 +1,17 @@ #!groovy def jdks = ["jdk8", "jdk9"] +def oss = ["linux"] //windows? def builds = [:] -for (def jdk in jdks) { - builds[jdk] = getFullBuild( jdk ) +for (def os in oss) { + for (def jdk in jdks) { + builds[os+"_"+jdk] = getFullBuild( jdk, os ) + } } + parallel builds -def getFullBuild(jdk) { +def getFullBuild(jdk, os) { return { node { // System Dependent Locations From 5547435e094dfdb0b422b857046e78b4573b77f8 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Sun, 4 Feb 2018 09:46:53 +1000 Subject: [PATCH 031/134] add matrix with os Signed-off-by: olivier lamy --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 1ba04f0f7c6..f6798a10cb9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -13,7 +13,7 @@ parallel builds def getFullBuild(jdk, os) { return { - node { + node(os) { // System Dependent Locations def mvntool = tool name: 'maven3', type: 'hudson.tasks.Maven$MavenInstallation' def jdktool = tool name: "$jdk", type: 'hudson.model.JDK' From ab5fc29ccab1ee13070e9997721d19b1099267a7 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Thu, 8 Feb 2018 05:08:48 -0500 Subject: [PATCH 032/134] Jetty 9.4.x 1803 proposal 0 - single ReservedThreadExecutor (#2119) Issue #1803 - Review usage of scheduling strategies Use a single ReservedThreadExecutor built into the QueuedThreadPool via new interface TryExecutor. Signed-off-by: Greg Wilkins Signed-off-by: Simone Bordet --- .../client/HTTP2ClientConnectionFactory.java | 22 +---- .../eclipse/jetty/http2/HTTP2Connection.java | 10 ++- .../src/main/config/etc/jetty-http2.xml | 1 - .../src/main/config/modules/http2.mod | 4 - .../AbstractHTTP2ServerConnectionFactory.java | 37 +++------ .../http2/server/HTTP2ServerConnection.java | 4 +- .../org/eclipse/jetty/io/ManagedSelector.java | 39 +++++---- .../org/eclipse/jetty/io/SelectorManager.java | 46 +++-------- .../src/test/config/etc/jetty-http2.xml | 1 - .../src/main/config/etc/jetty-http.xml | 1 - .../src/main/config/etc/jetty-ssl.xml | 1 - .../src/main/config/etc/jetty-threadpool.xml | 1 + jetty-server/src/main/config/etc/jetty.xml | 1 - jetty-server/src/main/config/modules/http.mod | 3 - jetty-server/src/main/config/modules/ssl.mod | 3 - .../src/main/config/modules/threadpool.mod | 3 + .../jetty/util/thread/QueuedThreadPool.java | 82 ++++++++++++++----- .../util/thread/ReservedThreadExecutor.java | 36 ++------ .../jetty/util/thread/TryExecutor.java | 72 ++++++++++++++++ .../util/thread/strategy/EatWhatYouKill.java | 21 ++--- 20 files changed, 204 insertions(+), 184 deletions(-) create mode 100644 jetty-util/src/main/java/org/eclipse/jetty/util/thread/TryExecutor.java diff --git a/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2ClientConnectionFactory.java b/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2ClientConnectionFactory.java index 0a301c13b4d..8d48028f9da 100644 --- a/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2ClientConnectionFactory.java +++ b/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2ClientConnectionFactory.java @@ -39,7 +39,6 @@ import org.eclipse.jetty.io.EndPoint; import org.eclipse.jetty.util.Callback; import org.eclipse.jetty.util.Promise; import org.eclipse.jetty.util.component.LifeCycle; -import org.eclipse.jetty.util.thread.ReservedThreadExecutor; import org.eclipse.jetty.util.thread.Scheduler; public class HTTP2ClientConnectionFactory implements ClientConnectionFactory @@ -69,36 +68,19 @@ public class HTTP2ClientConnectionFactory implements ClientConnectionFactory HTTP2ClientSession session = new HTTP2ClientSession(scheduler, endPoint, generator, listener, flowControl); Parser parser = new Parser(byteBufferPool, session, 4096, 8192); - ReservedThreadExecutor reservedExecutor = provideReservedThreadExecutor(client, executor); - - HTTP2ClientConnection connection = new HTTP2ClientConnection(client, byteBufferPool, reservedExecutor, endPoint, + HTTP2ClientConnection connection = new HTTP2ClientConnection(client, byteBufferPool, executor, endPoint, parser, session, client.getInputBufferSize(), promise, listener); connection.addListener(connectionListener); return customize(connection, context); } - protected ReservedThreadExecutor provideReservedThreadExecutor(HTTP2Client client, Executor executor) - { - synchronized (this) - { - ReservedThreadExecutor reservedExecutor = client.getBean(ReservedThreadExecutor.class); - if (reservedExecutor == null) - { - // TODO: see HTTP2Connection.FillableCallback - reservedExecutor = new ReservedThreadExecutor(executor, 0); - client.addManaged(reservedExecutor); - } - return reservedExecutor; - } - } - private class HTTP2ClientConnection extends HTTP2Connection implements Callback { private final HTTP2Client client; private final Promise promise; private final Session.Listener listener; - private HTTP2ClientConnection(HTTP2Client client, ByteBufferPool byteBufferPool, ReservedThreadExecutor executor, EndPoint endpoint, Parser parser, ISession session, int bufferSize, Promise promise, Session.Listener listener) + private HTTP2ClientConnection(HTTP2Client client, ByteBufferPool byteBufferPool, Executor executor, EndPoint endpoint, Parser parser, ISession session, int bufferSize, Promise promise, Session.Listener listener) { super(byteBufferPool, executor, endpoint, parser, session, bufferSize); this.client = client; diff --git a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Connection.java b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Connection.java index 6375f01ebd8..2555d99008c 100644 --- a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Connection.java +++ b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Connection.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayDeque; import java.util.Queue; +import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicLong; import org.eclipse.jetty.http2.parser.Parser; @@ -35,7 +36,7 @@ import org.eclipse.jetty.util.component.LifeCycle; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.thread.ExecutionStrategy; -import org.eclipse.jetty.util.thread.ReservedThreadExecutor; +import org.eclipse.jetty.util.thread.TryExecutor; import org.eclipse.jetty.util.thread.strategy.EatWhatYouKill; public class HTTP2Connection extends AbstractConnection implements WriteFlusher.Listener @@ -51,14 +52,15 @@ public class HTTP2Connection extends AbstractConnection implements WriteFlusher. private final int bufferSize; private final ExecutionStrategy strategy; - public HTTP2Connection(ByteBufferPool byteBufferPool, ReservedThreadExecutor executor, EndPoint endPoint, Parser parser, ISession session, int bufferSize) + public HTTP2Connection(ByteBufferPool byteBufferPool, Executor executor, EndPoint endPoint, Parser parser, ISession session, int bufferSize) { - super(endPoint, executor.getExecutor()); + super(endPoint, executor); this.byteBufferPool = byteBufferPool; this.parser = parser; this.session = session; this.bufferSize = bufferSize; - this.strategy = new EatWhatYouKill(producer, executor.getExecutor(), executor); + // TODO HTTP2 cannot use EWYK without fix for #1803 + this.strategy = new EatWhatYouKill(producer, new TryExecutor.NoTryExecutor(executor)); LifeCycle.start(strategy); } diff --git a/jetty-http2/http2-server/src/main/config/etc/jetty-http2.xml b/jetty-http2/http2-server/src/main/config/etc/jetty-http2.xml index 1d6423589e3..2de7f348d0a 100644 --- a/jetty-http2/http2-server/src/main/config/etc/jetty-http2.xml +++ b/jetty-http2/http2-server/src/main/config/etc/jetty-http2.xml @@ -12,7 +12,6 @@ - diff --git a/jetty-http2/http2-server/src/main/config/modules/http2.mod b/jetty-http2/http2-server/src/main/config/modules/http2.mod index 2ffa068ede6..e5def621a6a 100644 --- a/jetty-http2/http2-server/src/main/config/modules/http2.mod +++ b/jetty-http2/http2-server/src/main/config/modules/http2.mod @@ -27,7 +27,3 @@ etc/jetty-http2.xml ## Initial session receive window (client to server) # jetty.http2.initialSessionRecvWindow=1048576 - -## Reserve threads for high priority tasks (-1 use number of Selectors, 0 no reserved threads) -# jetty.http2.reservedThreads=-1 - diff --git a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/AbstractHTTP2ServerConnectionFactory.java b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/AbstractHTTP2ServerConnectionFactory.java index a42d5ccd399..1128f3cd574 100644 --- a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/AbstractHTTP2ServerConnectionFactory.java +++ b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/AbstractHTTP2ServerConnectionFactory.java @@ -35,7 +35,6 @@ import org.eclipse.jetty.util.annotation.ManagedAttribute; import org.eclipse.jetty.util.annotation.ManagedObject; import org.eclipse.jetty.util.annotation.Name; import org.eclipse.jetty.util.component.LifeCycle; -import org.eclipse.jetty.util.thread.ReservedThreadExecutor; @ManagedObject public abstract class AbstractHTTP2ServerConnectionFactory extends AbstractConnectionFactory @@ -49,7 +48,6 @@ public abstract class AbstractHTTP2ServerConnectionFactory extends AbstractConne private int maxHeaderBlockFragment = 0; private FlowControlStrategy.Factory flowControlStrategyFactory = () -> new BufferingFlowControlStrategy(0.5F); private long streamIdleTimeout; - private int reservedThreads; public AbstractHTTP2ServerConnectionFactory(@Name("config") HttpConfiguration httpConfiguration) { @@ -143,20 +141,23 @@ public abstract class AbstractHTTP2ServerConnectionFactory extends AbstractConne } /** - * @see ReservedThreadExecutor - * @return The number of reserved threads + * @return -1 + * @deprecated */ - @ManagedAttribute("The number of threads reserved for high priority tasks") + @Deprecated public int getReservedThreads() { - return reservedThreads; + return -1; } + /** + * @param threads ignored + * @deprecated + */ + @Deprecated public void setReservedThreads(int threads) { - // TODO: see also HTTP2Connection.FillableCallback. - // TODO: currently disabled since the only value that works is 0. -// this.reservedThreads = threads; + throw new UnsupportedOperationException(); } public HttpConfiguration getHttpConfiguration() @@ -183,30 +184,14 @@ public abstract class AbstractHTTP2ServerConnectionFactory extends AbstractConne streamIdleTimeout = endPoint.getIdleTimeout(); session.setStreamIdleTimeout(streamIdleTimeout); session.setInitialSessionRecvWindow(getInitialSessionRecvWindow()); - - ReservedThreadExecutor executor = provideReservedThreadExecutor(connector); ServerParser parser = newServerParser(connector, session); - HTTP2Connection connection = new HTTP2ServerConnection(connector.getByteBufferPool(), executor, + HTTP2Connection connection = new HTTP2ServerConnection(connector.getByteBufferPool(), connector.getExecutor(), endPoint, httpConfiguration, parser, session, getInputBufferSize(), listener); connection.addListener(connectionListener); return configure(connection, connector, endPoint); } - protected ReservedThreadExecutor provideReservedThreadExecutor(Connector connector) - { - synchronized (this) - { - ReservedThreadExecutor executor = getBean(ReservedThreadExecutor.class); - if (executor == null) - { - executor = new ReservedThreadExecutor(connector.getExecutor(), getReservedThreads()); - addManaged(executor); - } - return executor; - } - } - protected abstract ServerSessionListener newSessionListener(Connector connector, EndPoint endPoint); protected ServerParser newServerParser(Connector connector, ServerParser.Listener listener) diff --git a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerConnection.java b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerConnection.java index cef4a34498b..fb18d564a72 100644 --- a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerConnection.java +++ b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerConnection.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Queue; +import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicLong; import org.eclipse.jetty.http.BadMessageException; @@ -58,7 +59,6 @@ import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.Callback; import org.eclipse.jetty.util.CountingCallback; import org.eclipse.jetty.util.TypeUtil; -import org.eclipse.jetty.util.thread.ReservedThreadExecutor; public class HTTP2ServerConnection extends HTTP2Connection implements Connection.UpgradeTo { @@ -94,7 +94,7 @@ public class HTTP2ServerConnection extends HTTP2Connection implements Connection private final HttpConfiguration httpConfig; private boolean recycleHttpChannels; - public HTTP2ServerConnection(ByteBufferPool byteBufferPool, ReservedThreadExecutor executor, EndPoint endPoint, HttpConfiguration httpConfig, ServerParser parser, ISession session, int inputBufferSize, ServerSessionListener listener) + public HTTP2ServerConnection(ByteBufferPool byteBufferPool, Executor executor, EndPoint endPoint, HttpConfiguration httpConfig, ServerParser parser, ISession session, int inputBufferSize, ServerSessionListener listener) { super(byteBufferPool, executor, endPoint, parser, session, inputBufferSize); this.listener = listener; diff --git a/jetty-io/src/main/java/org/eclipse/jetty/io/ManagedSelector.java b/jetty-io/src/main/java/org/eclipse/jetty/io/ManagedSelector.java index c4fa8f42ad5..e8812f84101 100644 --- a/jetty-io/src/main/java/org/eclipse/jetty/io/ManagedSelector.java +++ b/jetty-io/src/main/java/org/eclipse/jetty/io/ManagedSelector.java @@ -48,7 +48,6 @@ import org.eclipse.jetty.util.component.DumpableCollection; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.thread.ExecutionStrategy; -import org.eclipse.jetty.util.thread.ReservedThreadExecutor; import org.eclipse.jetty.util.thread.Scheduler; import org.eclipse.jetty.util.thread.strategy.EatWhatYouKill; @@ -77,7 +76,7 @@ public class ManagedSelector extends ContainerLifeCycle implements Dumpable _id = id; SelectorProducer producer = new SelectorProducer(); Executor executor = selectorManager.getExecutor(); - _strategy = new EatWhatYouKill(producer,executor,_selectorManager.getBean(ReservedThreadExecutor.class)); + _strategy = new EatWhatYouKill(producer,executor); addBean(_strategy,true); setStopTimeout(5000); } @@ -136,17 +135,17 @@ public class ManagedSelector extends ContainerLifeCycle implements Dumpable /** * Submit an {@link SelectorUpdate} to be acted on between calls to {@link Selector#select()} - * @param action + * @param update The selector update to apply at next wakeup */ - public void submit(SelectorUpdate action) + public void submit(SelectorUpdate update) { if (LOG.isDebugEnabled()) - LOG.debug("Queued change {} on {}", action, this); + LOG.debug("Queued change {} on {}", update, this); Selector selector = null; synchronized(ManagedSelector.this) { - _updates.offer(action); + _updates.offer(update); if (_selecting) { @@ -265,15 +264,15 @@ public class ManagedSelector extends ContainerLifeCycle implements Dumpable { Selector selector = _selector; List keys = null; - List actions = null; + List updates = null; if (selector != null && selector.isOpen()) { DumpKeys dump = new DumpKeys(); - String actionsAt; + String updatesAt; synchronized(ManagedSelector.this) { - actionsAt = DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()); - actions = new ArrayList<>(_updates); + updatesAt = DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()); + updates = new ArrayList<>(_updates); _updates.addFirst(dump); _selecting = false; } @@ -282,7 +281,7 @@ public class ManagedSelector extends ContainerLifeCycle implements Dumpable String keysAt = DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()); if (keys==null) keys = Collections.singletonList("No dump keys retrieved"); - dumpBeans(out, indent, Arrays.asList(new DumpableCollection("actions @ "+actionsAt, actions), + dumpBeans(out, indent, Arrays.asList(new DumpableCollection("updates @ "+updatesAt, updates), new DumpableCollection("keys @ "+keysAt, keys))); } else @@ -295,7 +294,7 @@ public class ManagedSelector extends ContainerLifeCycle implements Dumpable public String toString() { Selector selector = _selector; - return String.format("%s id=%s keys=%d selected=%d actions=%d", + return String.format("%s id=%s keys=%d selected=%d updates=%d", super.toString(), _id, selector != null && selector.isOpen() ? selector.keys().size() : -1, @@ -377,16 +376,16 @@ public class ManagedSelector extends ContainerLifeCycle implements Dumpable _updateable.clear(); Selector selector; - int actions; + int updates; synchronized(ManagedSelector.this) { - actions = _updates.size(); - _selecting = actions==0; + updates = _updates.size(); + _selecting = updates==0; selector = _selecting?null:_selector; } if (LOG.isDebugEnabled()) - LOG.debug("actions {}",actions); + LOG.debug("updates {}",updates); if (selector != null) selector.wakeup(); @@ -405,18 +404,18 @@ public class ManagedSelector extends ContainerLifeCycle implements Dumpable if (LOG.isDebugEnabled()) LOG.debug("Selector {} woken up from select, {}/{} selected", selector, selected, selector.keys().size()); - int actions; + int updates; synchronized(ManagedSelector.this) { // finished selecting _selecting = false; - actions = _updates.size(); + updates = _updates.size(); } _keys = selector.selectedKeys(); _cursor = _keys.iterator(); if (LOG.isDebugEnabled()) - LOG.debug("Selector {} processing {} keys, {} actions", selector, _keys.size(), actions); + LOG.debug("Selector {} processing {} keys, {} updates", selector, _keys.size(), updates); return true; } @@ -489,7 +488,7 @@ public class ManagedSelector extends ContainerLifeCycle implements Dumpable { // Do update keys for only previously selected keys. // This will update only those keys whose selection did not cause an - // updateKeys action to be submitted. + // updateKeys update to be submitted. for (SelectionKey key : _keys) updateKey(key); _keys.clear(); diff --git a/jetty-io/src/main/java/org/eclipse/jetty/io/SelectorManager.java b/jetty-io/src/main/java/org/eclipse/jetty/io/SelectorManager.java index 8320d2b22d4..7da0ee066c8 100644 --- a/jetty-io/src/main/java/org/eclipse/jetty/io/SelectorManager.java +++ b/jetty-io/src/main/java/org/eclipse/jetty/io/SelectorManager.java @@ -38,11 +38,9 @@ import org.eclipse.jetty.util.component.ContainerLifeCycle; import org.eclipse.jetty.util.component.Dumpable; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; -import org.eclipse.jetty.util.thread.ReservedThreadExecutor; import org.eclipse.jetty.util.thread.Scheduler; import org.eclipse.jetty.util.thread.ThreadPool; import org.eclipse.jetty.util.thread.ThreadPoolBudget; -import org.eclipse.jetty.util.thread.strategy.EatWhatYouKill; /** *

{@link SelectorManager} manages a number of {@link ManagedSelector}s that @@ -63,9 +61,7 @@ public abstract class SelectorManager extends ContainerLifeCycle implements Dump private final AtomicInteger _selectorIndex = new AtomicInteger(); private final IntUnaryOperator _selectorIndexUpdate; private long _connectTimeout = DEFAULT_CONNECT_TIMEOUT; - private int _reservedThreads = -1; private ThreadPoolBudget.Lease _lease; - private ReservedThreadExecutor _reservedThreadExecutor; private static int defaultSelectors(Executor executor) { @@ -133,34 +129,23 @@ public abstract class SelectorManager extends ContainerLifeCycle implements Dump } /** - * Get the number of preallocated producing threads - * @see EatWhatYouKill - * @see ReservedThreadExecutor - * @return The number of threads preallocated to producing (default -1). + * @return -1 + * @deprecated */ - @ManagedAttribute("The number of reserved producer threads") + @Deprecated public int getReservedThreads() { - return _reservedThreads; + return -1; } - + /** - * Set the number of reserved threads for high priority tasks. - *

Reserved threads are used to take over producing duties, so that a - * producer thread may immediately consume a task it has produced (EatWhatYouKill - * scheduling). If a reserved thread is not available, then produced tasks must - * be submitted to an executor to be executed by a different thread. - * @see EatWhatYouKill - * @see ReservedThreadExecutor - * @param threads The number of producing threads to preallocate. If - * less that 0 (the default), then a heuristic based on the number of CPUs and - * the thread pool size is used to select the number of threads. If 0, no - * threads are preallocated and the EatWhatYouKill scheduler will be - * disabled and all produced tasks will be executed in a separate thread. + * @param threads ignored + * @deprecated */ + @Deprecated public void setReservedThreads(int threads) { - _reservedThreads = threads; + throw new UnsupportedOperationException(); } /** @@ -182,7 +167,7 @@ public abstract class SelectorManager extends ContainerLifeCycle implements Dump return _selectors.length; } - private ManagedSelector chooseSelector(SelectableChannel channel) + private ManagedSelector chooseSelector() { return _selectors[_selectorIndex.updateAndGet(_selectorIndexUpdate)]; } @@ -199,7 +184,7 @@ public abstract class SelectorManager extends ContainerLifeCycle implements Dump */ public void connect(SelectableChannel channel, Object attachment) { - ManagedSelector set = chooseSelector(channel); + ManagedSelector set = chooseSelector(); set.submit(set.new Connect(channel, attachment)); } @@ -224,7 +209,7 @@ public abstract class SelectorManager extends ContainerLifeCycle implements Dump */ public void accept(SelectableChannel channel, Object attachment) { - final ManagedSelector selector = chooseSelector(channel); + final ManagedSelector selector = chooseSelector(); selector.submit(selector.new Accept(channel, attachment)); } @@ -239,7 +224,7 @@ public abstract class SelectorManager extends ContainerLifeCycle implements Dump */ public Closeable acceptor(SelectableChannel server) { - final ManagedSelector selector = chooseSelector(null); + final ManagedSelector selector = chooseSelector(); ManagedSelector.Acceptor acceptor = selector.new Acceptor(server); selector.submit(acceptor); return acceptor; @@ -262,8 +247,6 @@ public abstract class SelectorManager extends ContainerLifeCycle implements Dump @Override protected void doStart() throws Exception { - _reservedThreadExecutor = new ReservedThreadExecutor(getExecutor(),_reservedThreads,this); - addBean(_reservedThreadExecutor,true); _lease = ThreadPoolBudget.leaseFrom(getExecutor(), this, _selectors.length); for (int i = 0; i < _selectors.length; i++) { @@ -301,9 +284,6 @@ public abstract class SelectorManager extends ContainerLifeCycle implements Dump removeBean(selector); } Arrays.fill(_selectors,null); - if (_reservedThreadExecutor!=null) - removeBean(_reservedThreadExecutor); - _reservedThreadExecutor = null; if (_lease != null) _lease.close(); } diff --git a/jetty-osgi/test-jetty-osgi/src/test/config/etc/jetty-http2.xml b/jetty-osgi/test-jetty-osgi/src/test/config/etc/jetty-http2.xml index 1d6423589e3..2de7f348d0a 100644 --- a/jetty-osgi/test-jetty-osgi/src/test/config/etc/jetty-http2.xml +++ b/jetty-osgi/test-jetty-osgi/src/test/config/etc/jetty-http2.xml @@ -12,7 +12,6 @@ - diff --git a/jetty-server/src/main/config/etc/jetty-http.xml b/jetty-server/src/main/config/etc/jetty-http.xml index f48e4863626..cb0618df3ee 100644 --- a/jetty-server/src/main/config/etc/jetty-http.xml +++ b/jetty-server/src/main/config/etc/jetty-http.xml @@ -42,7 +42,6 @@ - diff --git a/jetty-server/src/main/config/etc/jetty-ssl.xml b/jetty-server/src/main/config/etc/jetty-ssl.xml index 956809bda28..5c563232d6b 100644 --- a/jetty-server/src/main/config/etc/jetty-ssl.xml +++ b/jetty-server/src/main/config/etc/jetty-ssl.xml @@ -34,7 +34,6 @@ - diff --git a/jetty-server/src/main/config/etc/jetty-threadpool.xml b/jetty-server/src/main/config/etc/jetty-threadpool.xml index c653f0be8ac..dda4c4e773e 100644 --- a/jetty-server/src/main/config/etc/jetty-threadpool.xml +++ b/jetty-server/src/main/config/etc/jetty-threadpool.xml @@ -22,6 +22,7 @@ + diff --git a/jetty-server/src/main/config/etc/jetty.xml b/jetty-server/src/main/config/etc/jetty.xml index 2e0f21bb4a5..9f93b35c739 100644 --- a/jetty-server/src/main/config/etc/jetty.xml +++ b/jetty-server/src/main/config/etc/jetty.xml @@ -24,7 +24,6 @@ - diff --git a/jetty-server/src/main/config/modules/http.mod b/jetty-server/src/main/config/modules/http.mod index 57ad1c82b28..c288d6ab5d9 100644 --- a/jetty-server/src/main/config/modules/http.mod +++ b/jetty-server/src/main/config/modules/http.mod @@ -40,9 +40,6 @@ etc/jetty-http.xml ## Thread priority delta to give to acceptor threads # jetty.http.acceptorPriorityDelta=0 -## Reserve threads for high priority tasks (-1 use a heuristic, 0 no reserved threads) -# jetty.http.reservedThreads=-1 - ## Connect Timeout in milliseconds # jetty.http.connectTimeout=15000 diff --git a/jetty-server/src/main/config/modules/ssl.mod b/jetty-server/src/main/config/modules/ssl.mod index 109aaba460b..b9e530f3d25 100644 --- a/jetty-server/src/main/config/modules/ssl.mod +++ b/jetty-server/src/main/config/modules/ssl.mod @@ -44,9 +44,6 @@ basehome:modules/ssl/keystore|etc/keystore ## Thread priority delta to give to acceptor threads # jetty.ssl.acceptorPriorityDelta=0 -## Preallocated producer threads (0 disables EatWhatYouKill scheduling) -# jetty.ssl.reservedThreads=-1 - ## Connect Timeout in milliseconds # jetty.ssl.connectTimeout=15000 diff --git a/jetty-server/src/main/config/modules/threadpool.mod b/jetty-server/src/main/config/modules/threadpool.mod index 58d3e3a3048..591ddebb94f 100644 --- a/jetty-server/src/main/config/modules/threadpool.mod +++ b/jetty-server/src/main/config/modules/threadpool.mod @@ -13,6 +13,9 @@ etc/jetty-threadpool.xml ## Maximum Number of Threads #jetty.threadPool.maxThreads=200 +## Number of reserved threads (-1 for heuristic) +# jetty.threadPool.reservedThreads=-1 + ## Thread Idle Timeout (in milliseconds) #jetty.threadPool.idleTimeout=60000 diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/thread/QueuedThreadPool.java b/jetty-util/src/main/java/org/eclipse/jetty/util/thread/QueuedThreadPool.java index 1554c60afab..3541f1c4708 100755 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/thread/QueuedThreadPool.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/thread/QueuedThreadPool.java @@ -36,7 +36,6 @@ import org.eclipse.jetty.util.annotation.ManagedAttribute; import org.eclipse.jetty.util.annotation.ManagedObject; import org.eclipse.jetty.util.annotation.ManagedOperation; import org.eclipse.jetty.util.annotation.Name; -import org.eclipse.jetty.util.component.AbstractLifeCycle; import org.eclipse.jetty.util.component.ContainerLifeCycle; import org.eclipse.jetty.util.component.Dumpable; import org.eclipse.jetty.util.component.DumpableCollection; @@ -46,7 +45,7 @@ import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.thread.ThreadPool.SizedThreadPool; @ManagedObject("A thread pool") -public class QueuedThreadPool extends AbstractLifeCycle implements SizedThreadPool, Dumpable +public class QueuedThreadPool extends ContainerLifeCycle implements SizedThreadPool, Dumpable, TryExecutor { private static final Logger LOG = Log.getLogger(QueuedThreadPool.class); @@ -61,6 +60,8 @@ public class QueuedThreadPool extends AbstractLifeCycle implements SizedThreadPo private int _idleTimeout; private int _maxThreads; private int _minThreads; + private int _reservedThreads = -1; + private TryExecutor _tryExecutor = TryExecutor.NO_TRY; private int _priority = Thread.NORM_PRIORITY; private boolean _daemon = false; private boolean _detailedDump = false; @@ -93,12 +94,17 @@ public class QueuedThreadPool extends AbstractLifeCycle implements SizedThreadPo } public QueuedThreadPool(@Name("maxThreads") int maxThreads, @Name("minThreads") int minThreads, @Name("idleTimeout") int idleTimeout, @Name("queue") BlockingQueue queue, @Name("threadGroup") ThreadGroup threadGroup) + { + this(maxThreads, minThreads, idleTimeout, -1, queue, threadGroup); + } + + public QueuedThreadPool(@Name("maxThreads") int maxThreads, @Name("minThreads") int minThreads, @Name("idleTimeout") int idleTimeout, @Name("reservedThreads") int reservedThreads, @Name("queue") BlockingQueue queue, @Name("threadGroup") ThreadGroup threadGroup) { setMinThreads(minThreads); setMaxThreads(maxThreads); setIdleTimeout(idleTimeout); setStopTimeout(5000); - + setReservedThreads(reservedThreads); if (queue==null) { int capacity=Math.max(_minThreads, 8); @@ -106,7 +112,7 @@ public class QueuedThreadPool extends AbstractLifeCycle implements SizedThreadPo } _jobs=queue; _threadGroup=threadGroup; - _budget=new ThreadPoolBudget(this); + setThreadPoolBudget(new ThreadPoolBudget(this)); } @Override @@ -125,15 +131,21 @@ public class QueuedThreadPool extends AbstractLifeCycle implements SizedThreadPo @Override protected void doStart() throws Exception { + _tryExecutor = new ReservedThreadExecutor(this,_reservedThreads); + addBean(_tryExecutor); + super.doStart(); _threadsStarted.set(0); - startThreads(_minThreads); + startThreads(_minThreads); } @Override protected void doStop() throws Exception { + removeBean(_tryExecutor); + _tryExecutor = TryExecutor.NO_TRY; + super.doStop(); long timeout = getStopTimeout(); @@ -222,7 +234,6 @@ public class QueuedThreadPool extends AbstractLifeCycle implements SizedThreadPo * Set the maximum thread idle time. * Threads that are idle for longer than this period may be * stopped. - * Delegated to the named or anonymous Pool. * * @param idleTimeout Max idle time in ms. * @see #getIdleTimeout @@ -234,7 +245,6 @@ public class QueuedThreadPool extends AbstractLifeCycle implements SizedThreadPo /** * Set the maximum number of threads. - * Delegated to the named or anonymous Pool. * * @param maxThreads maximum number of threads. * @see #getMaxThreads @@ -249,7 +259,6 @@ public class QueuedThreadPool extends AbstractLifeCycle implements SizedThreadPo /** * Set the minimum number of threads. - * Delegated to the named or anonymous Pool. * * @param minThreads minimum number of threads * @see #getMinThreads @@ -266,6 +275,19 @@ public class QueuedThreadPool extends AbstractLifeCycle implements SizedThreadPo if (isStarted() && threads < _minThreads) startThreads(_minThreads - threads); } + + /** + * Set the number of reserved threads. + * + * @param reservedThreads number of reserved threads or -1 for heuristically determined + * @see #getReservedThreads + */ + public void setReservedThreads(int reservedThreads) + { + if (isRunning()) + throw new IllegalStateException(getState()); + _reservedThreads = reservedThreads; + } /** * @param name Name of this thread pool to use when naming threads. @@ -289,7 +311,6 @@ public class QueuedThreadPool extends AbstractLifeCycle implements SizedThreadPo /** * Get the maximum thread idle time. - * Delegated to the named or anonymous Pool. * * @return Max idle time in ms. * @see #setIdleTimeout @@ -302,7 +323,6 @@ public class QueuedThreadPool extends AbstractLifeCycle implements SizedThreadPo /** * Get the maximum number of threads. - * Delegated to the named or anonymous Pool. * * @return maximum number of threads. * @see #setMaxThreads @@ -316,7 +336,6 @@ public class QueuedThreadPool extends AbstractLifeCycle implements SizedThreadPo /** * Get the minimum number of threads. - * Delegated to the named or anonymous Pool. * * @return minimum number of threads. * @see #setMinThreads @@ -328,6 +347,20 @@ public class QueuedThreadPool extends AbstractLifeCycle implements SizedThreadPo return _minThreads; } + /** + * Get the number of reserved threads. + * + * @return number of reserved threads or or -1 for heuristically determined + * @see #setReservedThreads + */ + @ManagedAttribute("the number of reserved threads in the pool") + public int getReservedThreads() + { + if (isStarted()) + return getBean(ReservedThreadExecutor.class).getCapacity(); + return _reservedThreads; + } + /** * @return The name of the this thread pool */ @@ -409,6 +442,13 @@ public class QueuedThreadPool extends AbstractLifeCycle implements SizedThreadPo } } + @Override + public boolean tryExecute(Runnable task) + { + TryExecutor tryExecutor = _tryExecutor; + return tryExecutor!=null && tryExecutor.tryExecute(task); + } + /** * Blocks until the thread pool is {@link LifeCycle#stop stopped}. */ @@ -509,13 +549,6 @@ public class QueuedThreadPool extends AbstractLifeCycle implements SizedThreadPo return new Thread(_threadGroup, runnable); } - @Override - @ManagedOperation("dumps thread pool state") - public String dump() - { - return ContainerLifeCycle.dump(this); - } - @Override public void dump(Appendable out, String indent) throws IOException { @@ -585,14 +618,21 @@ public class QueuedThreadPool extends AbstractLifeCycle implements SizedThreadPo if (isDetailedDump()) jobs = new ArrayList<>(getQueue()); - ContainerLifeCycle.dumpObject(out, this); - ContainerLifeCycle.dump(out, indent, threads, Collections.singletonList(new DumpableCollection("jobs",jobs))); + dumpBeans(out, indent, threads, Collections.singletonList(new DumpableCollection("jobs", jobs))); } @Override public String toString() { - return String.format("QueuedThreadPool@%s{%s,%d<=%d<=%d,i=%d,q=%d}", _name, getState(), getMinThreads(), getThreads(), getMaxThreads(), getIdleThreads(), (_jobs == null ? -1 : _jobs.size())); + return String.format("QueuedThreadPool@%s{%s,%d<=%d<=%d,i=%d,q=%d,r=%s}", + _name, + getState(), + getMinThreads(), + getThreads(), + getMaxThreads(), + getIdleThreads(), + _jobs.size(), + _tryExecutor); } private Runnable idleJobPoll() throws InterruptedException diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ReservedThreadExecutor.java b/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ReservedThreadExecutor.java index 340899dec60..639f2ca9416 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ReservedThreadExecutor.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ReservedThreadExecutor.java @@ -42,7 +42,7 @@ import org.eclipse.jetty.util.log.Logger; * whenever it has been idle for that period. */ @ManagedObject("A pool for reserved threads") -public class ReservedThreadExecutor extends AbstractLifeCycle implements Executor +public class ReservedThreadExecutor extends AbstractLifeCycle implements TryExecutor { private static final Logger LOG = Log.getLogger(ReservedThreadExecutor.class); private static final Runnable STOP = new Runnable() @@ -66,42 +66,24 @@ public class ReservedThreadExecutor extends AbstractLifeCycle implements Executo private final AtomicInteger _pending = new AtomicInteger(); private ThreadPoolBudget.Lease _lease; - private Object _owner; private long _idleTime = 1L; private TimeUnit _idleTimeUnit = TimeUnit.MINUTES; - public ReservedThreadExecutor(Executor executor) - { - this(executor,1); - } - - /** - * @param executor The executor to use to obtain threads - * @param capacity The number of threads to preallocate. If less than 0 then capacity - * is calculated based on a heuristic from the number of available processors and - * thread pool size. - */ - public ReservedThreadExecutor(Executor executor, int capacity) - { - this(executor,capacity,null); - } - /** * @param executor The executor to use to obtain threads * @param capacity The number of threads to preallocate. If less than 0 then capacity * is calculated based on a heuristic from the number of available processors and * thread pool size. - * @param owner the owner of the instance. Only used for debugging purpose withing the {@link #toString()} method */ - public ReservedThreadExecutor(Executor executor,int capacity, Object owner) + public ReservedThreadExecutor(Executor executor,int capacity) { _executor = executor; _capacity = reservedThreads(executor,capacity); _stack = new ConcurrentLinkedDeque<>(); - _owner = owner; LOG.debug("{}",this); } + /** * @param executor The executor to use to obtain threads * @param capacity The number of threads to preallocate, If less than 0 then capacity @@ -110,7 +92,7 @@ public class ReservedThreadExecutor extends AbstractLifeCycle implements Executo * @return the number of reserved threads that would be used by a ReservedThreadExecutor * constructed with these arguments. */ - public static int reservedThreads(Executor executor,int capacity) + private static int reservedThreads(Executor executor,int capacity) { if (capacity>=0) return capacity; @@ -118,7 +100,7 @@ public class ReservedThreadExecutor extends AbstractLifeCycle implements Executo if (executor instanceof ThreadPool.SizedThreadPool) { int threads = ((ThreadPool.SizedThreadPool)executor).getMaxThreads(); - return Math.max(1, Math.min(cpus, threads / 8)); + return Math.max(1, Math.min(cpus, threads / 10)); } return cpus; } @@ -193,8 +175,7 @@ public class ReservedThreadExecutor extends AbstractLifeCycle implements Executo @Override public void execute(Runnable task) throws RejectedExecutionException { - if (!tryExecute(task)) - throw new RejectedExecutionException(); + _executor.execute(task); } /** @@ -255,13 +236,12 @@ public class ReservedThreadExecutor extends AbstractLifeCycle implements Executo @Override public String toString() { - return String.format("%s@%x{s=%d/%d,p=%d}@%s", + return String.format("%s@%x{s=%d/%d,p=%d}", getClass().getSimpleName(), hashCode(), _size.get(), _capacity, - _pending.get(), - _owner); + _pending.get()); } private class ReservedThread implements Runnable diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/thread/TryExecutor.java b/jetty-util/src/main/java/org/eclipse/jetty/util/thread/TryExecutor.java new file mode 100644 index 00000000000..9919a09a15e --- /dev/null +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/thread/TryExecutor.java @@ -0,0 +1,72 @@ +// +// ======================================================================== +// Copyright (c) 1995-2018 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package org.eclipse.jetty.util.thread; + +import java.util.concurrent.Executor; +import java.util.concurrent.RejectedExecutionException; + +/** + * A variation of Executor that can confirm if a thread is available immediately + */ +public interface TryExecutor extends Executor +{ + /** + * Attempt to execute a task. + * @param task The task to be executed + * @return True IFF the task has been given directly to a thread to execute. The task cannot be queued pending the later availability of a Thread. + */ + boolean tryExecute(Runnable task); + + default void execute(Runnable task) + { + if (!tryExecute(task)) + throw new RejectedExecutionException(); + } + + public static TryExecutor asTryExecutor(Executor executor) + { + if (executor instanceof TryExecutor) + return (TryExecutor)executor; + return new NoTryExecutor(executor); + } + + public static class NoTryExecutor implements TryExecutor + { + private final Executor executor; + + public NoTryExecutor(Executor executor) + { + this.executor = executor; + } + + @Override + public void execute(Runnable task) + { + executor.execute(task); + } + + @Override + public boolean tryExecute(Runnable task) + { + return false; + } + } + + public static final TryExecutor NO_TRY = task -> false; +} diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/EatWhatYouKill.java b/jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/EatWhatYouKill.java index 798a07ce013..ff4636f01f8 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/EatWhatYouKill.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/EatWhatYouKill.java @@ -34,7 +34,7 @@ import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.thread.ExecutionStrategy; import org.eclipse.jetty.util.thread.Invocable; import org.eclipse.jetty.util.thread.Invocable.InvocationType; -import org.eclipse.jetty.util.thread.ReservedThreadExecutor; +import org.eclipse.jetty.util.thread.TryExecutor; /** *

A strategy where the thread that produces will run the resulting task if it @@ -73,25 +73,16 @@ public class EatWhatYouKill extends ContainerLifeCycle implements ExecutionStrat private final LongAdder _executed = new LongAdder(); private final Producer _producer; private final Executor _executor; - private final ReservedThreadExecutor _producers; + private final TryExecutor _tryExecutor; private State _state = State.IDLE; public EatWhatYouKill(Producer producer, Executor executor) - { - this(producer,executor,new ReservedThreadExecutor(executor,1)); - } - - public EatWhatYouKill(Producer producer, Executor executor, int maxReserved) - { - this(producer,executor,new ReservedThreadExecutor(executor,maxReserved)); - } - - public EatWhatYouKill(Producer producer, Executor executor, ReservedThreadExecutor producers) { _producer = producer; _executor = executor; - _producers = producers; + _tryExecutor = TryExecutor.asTryExecutor(executor); addBean(_producer); + addBean(_tryExecutor); if (LOG.isDebugEnabled()) LOG.debug("{} created", this); } @@ -214,7 +205,7 @@ public class EatWhatYouKill extends ContainerLifeCycle implements ExecutionStrat { synchronized(this) { - if (_producers.tryExecute(this)) + if (_tryExecutor.tryExecute(this)) { // EXECUTE PRODUCE CONSUME! // We have executed a new Producer, so we can EWYK consume @@ -334,7 +325,7 @@ public class EatWhatYouKill extends ContainerLifeCycle implements ExecutionStrat { builder.append(_state); builder.append('/'); - builder.append(_producers); + builder.append(_tryExecutor); builder.append("[nb="); builder.append(getNonBlockingTasksConsumed()); builder.append(",c="); From 6bbd89e5dba20149e6ccf38eaf360740ec192b0c Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Thu, 8 Feb 2018 11:11:01 +0100 Subject: [PATCH 033/134] Added NoTryExecutor.toString() for better dumps. Signed-off-by: Simone Bordet --- .../java/org/eclipse/jetty/util/thread/TryExecutor.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/thread/TryExecutor.java b/jetty-util/src/main/java/org/eclipse/jetty/util/thread/TryExecutor.java index 9919a09a15e..fe96c212c0b 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/thread/TryExecutor.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/thread/TryExecutor.java @@ -66,6 +66,12 @@ public interface TryExecutor extends Executor { return false; } + + @Override + public String toString() + { + return String.format("%s@%x[%s]", getClass().getSimpleName(), hashCode(), executor); + } } public static final TryExecutor NO_TRY = task -> false; From a259285e3f3c8571583351d81317dc94e26c62d0 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 8 Feb 2018 08:47:11 -0600 Subject: [PATCH 034/134] Adding git log to csv example script for @jmcc0nn3ll --- scripts/git-log-csv.sh | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 scripts/git-log-csv.sh diff --git a/scripts/git-log-csv.sh b/scripts/git-log-csv.sh new file mode 100644 index 00000000000..0c6abb37f62 --- /dev/null +++ b/scripts/git-log-csv.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +git log --date=iso \ + --pretty=format:"%h%x09%an%x09%ad%x09%s" \ + $@ > commits.tab.txt From 252ed9349abb9615baf8114ce8e2d0deb14e81b0 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 8 Feb 2018 08:53:58 -0600 Subject: [PATCH 035/134] Updating s/2017/2018/ --- .../java/org/eclipse/jetty/test/DeploymentErrorInitializer.java | 2 +- .../test/java/org/eclipse/jetty/test/DeploymentErrorTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorInitializer.java b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorInitializer.java index 4c03dff006b..b203b3b1802 100644 --- a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorInitializer.java +++ b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorInitializer.java @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. +// Copyright (c) 1995-2018 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 diff --git a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java index 6dd6f7b9e34..d259f9c5ac5 100644 --- a/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java +++ b/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. +// Copyright (c) 1995-2018 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 From 26bc8687d7c4a91ca6d55387fb97480795407ef8 Mon Sep 17 00:00:00 2001 From: WalkerWatch Date: Thu, 8 Feb 2018 10:06:58 -0500 Subject: [PATCH 036/134] Issue #2179 - Documentation - Updated version matrix. --- .../main/asciidoc/quick-start/introduction/what-version.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jetty-documentation/src/main/asciidoc/quick-start/introduction/what-version.adoc b/jetty-documentation/src/main/asciidoc/quick-start/introduction/what-version.adoc index 9d54ce8a082..a14335c1845 100644 --- a/jetty-documentation/src/main/asciidoc/quick-start/introduction/what-version.adoc +++ b/jetty-documentation/src/main/asciidoc/quick-start/introduction/what-version.adoc @@ -26,7 +26,7 @@ While many people continue to use older versions of Jetty, we generally recommen _____ [IMPORTANT] It is important that only stable releases are used in production environments. -Versions that have been deprecated or are released as Milestones (M) or Release Candidates (RC) are not suitable for production as they may contain security flaws or incomplete/non-functioning feature sets. +Versions that have been deprecated or are released as Milestones (M) or Release Candidates (RC) are not suitable for production as they may contain security flaws or incomplete/non-functioning feature sets. _____ .Jetty Versions @@ -35,7 +35,7 @@ _____ |Version |Year |Home |JVM |Protocols |Servlet |JSP |Status |9.4 |2016- |Eclipse |1.8 |HTTP/1.1 (RFC 7230), HTTP/2 (RFC 7540), WebSocket (RFC 6455, JSR 356), FastCGI |3.1 |2.3 |Stable |9.3 |2015- |Eclipse |1.8 |HTTP/1.1 (RFC 7230), HTTP/2 (RFC 7540), WebSocket (RFC 6455, JSR 356), FastCGI |3.1 |2.3 |Stable -|9.2 |2014- |Eclipse |1.7 |HTTP/1.1 RFC2616, javax.websocket, SPDY v3 |3.1 |2.3 |Stable +|9.2 |2014- |Eclipse |1.7 |HTTP/1.1 RFC2616, javax.websocket, SPDY v3 |3.1 |2.3 |Deprecated / *End of Life January 2018* |8 |2009-2014 |Eclipse/Codehaus |1.6 |HTTP/1.1 RFC2616, WebSocket RFC 6455, SPDY v3 |3.0 |2.2 |Deprecated / *End of Life November 2014* |7 |2008-2014 |Eclipse/Codehaus |1.5 |HTTP/1.1 RFC2616, WebSocket RFC 6455, SPDY v3 |2.5 |2.1 |Deprecated / *End of Life November 2014* |6 |2006-2010 |Codehaus |1.4-1.5 |HTTP/1.1 RFC2616 |2.5 |2.0 |Deprecated / *End of Life November 2010* From a01e4a0f494621043d61c4d9b60f611d69009dbf Mon Sep 17 00:00:00 2001 From: David Ha Date: Wed, 31 Jan 2018 23:29:22 -0500 Subject: [PATCH 037/134] qtp constructor min-max validation When min and max threads are passed together, verify max >= min to detect bad configuration. Signed-off-by: David Ha --- .../org/eclipse/jetty/util/thread/QueuedThreadPool.java | 7 ++++++- .../eclipse/jetty/util/thread/QueuedThreadPoolTest.java | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/thread/QueuedThreadPool.java b/jetty-util/src/main/java/org/eclipse/jetty/util/thread/QueuedThreadPool.java index 3541f1c4708..fd254cade8f 100755 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/thread/QueuedThreadPool.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/thread/QueuedThreadPool.java @@ -75,7 +75,7 @@ public class QueuedThreadPool extends ContainerLifeCycle implements SizedThreadP public QueuedThreadPool(@Name("maxThreads") int maxThreads) { - this(maxThreads, 8); + this(maxThreads, Math.min(8, maxThreads)); } public QueuedThreadPool(@Name("maxThreads") int maxThreads, @Name("minThreads") int minThreads) @@ -100,6 +100,11 @@ public class QueuedThreadPool extends ContainerLifeCycle implements SizedThreadP public QueuedThreadPool(@Name("maxThreads") int maxThreads, @Name("minThreads") int minThreads, @Name("idleTimeout") int idleTimeout, @Name("reservedThreads") int reservedThreads, @Name("queue") BlockingQueue queue, @Name("threadGroup") ThreadGroup threadGroup) { + if (maxThreads < minThreads) { + throw new IllegalArgumentException("max threads ("+maxThreads+") less than min threads (" + +minThreads+")"); + } + setMinThreads(minThreads); setMaxThreads(maxThreads); setIdleTimeout(idleTimeout); diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/thread/QueuedThreadPoolTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/thread/QueuedThreadPoolTest.java index 61a2df76334..fff2e15b7d9 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/thread/QueuedThreadPoolTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/thread/QueuedThreadPoolTest.java @@ -302,4 +302,10 @@ public class QueuedThreadPoolTest assertTrue(latch.await(5, TimeUnit.SECONDS)); } + + @Test(expected = IllegalArgumentException.class) + public void testConstructorMinMaxThreadsValidation() + { + new QueuedThreadPool(4, 8); + } } From 8a6b33a3e86771166c11ff6b2dbf722872d8b724 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Fri, 9 Feb 2018 10:55:39 +0100 Subject: [PATCH 038/134] Fixes #2190 - HTTP/2 close and GOAWAY behavior. Now the receiver of a GOAWAY also replies with a GOAWAY before closing the connection. Signed-off-by: Simone Bordet --- .../eclipse/jetty/http2/client/HTTP2Test.java | 149 ++++++++++++++++++ .../org/eclipse/jetty/http2/HTTP2Session.java | 38 +++-- .../test/resources/jetty-logging.properties | 2 +- 3 files changed, 174 insertions(+), 15 deletions(-) diff --git a/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/HTTP2Test.java b/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/HTTP2Test.java index b9765b747e7..39a90b9386a 100644 --- a/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/HTTP2Test.java +++ b/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/HTTP2Test.java @@ -46,7 +46,16 @@ import org.eclipse.jetty.http2.api.server.ServerSessionListener; import org.eclipse.jetty.http2.frames.DataFrame; import org.eclipse.jetty.http2.frames.GoAwayFrame; import org.eclipse.jetty.http2.frames.HeadersFrame; +import org.eclipse.jetty.http2.frames.PingFrame; +import org.eclipse.jetty.http2.frames.PriorityFrame; +import org.eclipse.jetty.http2.frames.PushPromiseFrame; +import org.eclipse.jetty.http2.frames.ResetFrame; import org.eclipse.jetty.http2.frames.SettingsFrame; +import org.eclipse.jetty.http2.frames.WindowUpdateFrame; +import org.eclipse.jetty.http2.parser.ServerParser; +import org.eclipse.jetty.http2.server.RawHTTP2ServerConnectionFactory; +import org.eclipse.jetty.server.Connector; +import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.Callback; import org.eclipse.jetty.util.FuturePromise; @@ -678,6 +687,70 @@ public class HTTP2Test extends AbstractTest Assert.assertFalse(failureLatch.await(1, TimeUnit.SECONDS)); } + @Test + public void testGoAwayRespondedWithGoAway() throws Exception + { + ServerSessionListener.Adapter serverListener = new ServerSessionListener.Adapter() + { + @Override + public Stream.Listener onNewStream(Stream stream, HeadersFrame frame) + { + MetaData.Response metaData = new MetaData.Response(HttpVersion.HTTP_2, HttpStatus.OK_200, new HttpFields()); + HeadersFrame response = new HeadersFrame(stream.getId(), metaData, null, true); + stream.headers(response, Callback.NOOP); + stream.getSession().close(ErrorCode.NO_ERROR.code, null, Callback.NOOP); + return null; + } + }; + CountDownLatch goAwayLatch = new CountDownLatch(1); + RawHTTP2ServerConnectionFactory connectionFactory = new RawHTTP2ServerConnectionFactory(new HttpConfiguration(), serverListener) + { + @Override + protected ServerParser newServerParser(Connector connector, ServerParser.Listener listener) + { + return super.newServerParser(connector, new ServerParserListenerWrapper(listener) + { + @Override + public void onGoAway(GoAwayFrame frame) + { + super.onGoAway(frame); + goAwayLatch.countDown(); + } + }); + } + }; + prepareServer(connectionFactory); + server.start(); + + prepareClient(); + client.start(); + + CountDownLatch closeLatch = new CountDownLatch(1); + Session session = newClient(new Session.Listener.Adapter() + { + @Override + public void onClose(Session session, GoAwayFrame frame) + { + closeLatch.countDown(); + } + }); + MetaData.Request metaData = newRequest("GET", new HttpFields()); + HeadersFrame request = new HeadersFrame(metaData, null, true); + CountDownLatch responseLatch = new CountDownLatch(1); + session.newStream(request, new Promise.Adapter<>(), new Stream.Listener.Adapter() + { + @Override + public void onHeaders(Stream stream, HeadersFrame frame) + { + responseLatch.countDown(); + } + }); + + Assert.assertTrue(responseLatch.await(5, TimeUnit.SECONDS)); + Assert.assertTrue(closeLatch.await(5, TimeUnit.SECONDS)); + Assert.assertTrue(goAwayLatch.await(5, TimeUnit.SECONDS)); + } + private static void sleep(long time) { try @@ -689,4 +762,80 @@ public class HTTP2Test extends AbstractTest throw new RuntimeException(); } } + + private static class ServerParserListenerWrapper implements ServerParser.Listener + { + private final ServerParser.Listener listener; + + private ServerParserListenerWrapper(ServerParser.Listener listener) + { + this.listener = listener; + } + + @Override + public void onPreface() + { + listener.onPreface(); + } + + @Override + public void onData(DataFrame frame) + { + listener.onData(frame); + } + + @Override + public void onHeaders(HeadersFrame frame) + { + listener.onHeaders(frame); + } + + @Override + public void onPriority(PriorityFrame frame) + { + listener.onPriority(frame); + } + + @Override + public void onReset(ResetFrame frame) + { + listener.onReset(frame); + } + + @Override + public void onSettings(SettingsFrame frame) + { + listener.onSettings(frame); + } + + @Override + public void onPushPromise(PushPromiseFrame frame) + { + listener.onPushPromise(frame); + } + + @Override + public void onPing(PingFrame frame) + { + listener.onPing(frame); + } + + @Override + public void onGoAway(GoAwayFrame frame) + { + listener.onGoAway(frame); + } + + @Override + public void onWindowUpdate(WindowUpdateFrame frame) + { + listener.onWindowUpdate(frame); + } + + @Override + public void onConnectionFailure(int error, String reason) + { + listener.onConnectionFailure(error, reason); + } + } } diff --git a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Session.java b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Session.java index add1fdb84d3..02671ca3fee 100644 --- a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Session.java +++ b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Session.java @@ -24,7 +24,6 @@ import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -404,7 +403,7 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio *

  • NOT_CLOSED: we move to REMOTELY_CLOSED and queue a disconnect, so * that the content of the queue is written, and then the connection * closed. We notify the application after being terminated. - * See HTTP2Session.ControlEntry#succeeded()
  • + * See {@code HTTP2Session.ControlEntry#succeeded()} *
  • In all other cases, we do nothing since other methods are already * performing their actions.
  • * @@ -598,14 +597,7 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio { if (closed.compareAndSet(current, CloseState.LOCALLY_CLOSED)) { - byte[] payload = null; - if (reason != null) - { - // Trim the reason to avoid attack vectors. - reason = reason.substring(0, Math.min(reason.length(), 32)); - payload = reason.getBytes(StandardCharsets.UTF_8); - } - GoAwayFrame frame = new GoAwayFrame(lastStreamId.get(), error, payload); + GoAwayFrame frame = newGoAwayFrame(error, reason); control(null, callback, frame); return true; } @@ -622,6 +614,18 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio } } + private GoAwayFrame newGoAwayFrame(int error, String reason) + { + byte[] payload = null; + if (reason != null) + { + // Trim the reason to avoid attack vectors. + reason = reason.substring(0, Math.min(reason.length(), 32)); + payload = reason.getBytes(StandardCharsets.UTF_8); + } + return new GoAwayFrame(lastStreamId.get(), error, payload); + } + @Override public boolean isClosed() { @@ -771,9 +775,7 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio @Override public Collection getStreams() { - List result = new ArrayList<>(); - result.addAll(streams.values()); - return result; + return new ArrayList<>(streams.values()); } @ManagedAttribute("The number of active streams") @@ -1251,6 +1253,14 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio } super.succeeded(); } + + @Override + public void failed(Throwable x) + { + if (frame.getType() == FrameType.DISCONNECT) + terminate(new ClosedChannelException()); + super.failed(x); + } } private class DataEntry extends HTTP2Flusher.Entry @@ -1441,7 +1451,7 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio private void complete() { - control(null, Callback.NOOP, new DisconnectFrame()); + frames(null, Callback.NOOP, newGoAwayFrame(ErrorCode.NO_ERROR.code, null), new DisconnectFrame()); } } diff --git a/tests/test-http-client-transport/src/test/resources/jetty-logging.properties b/tests/test-http-client-transport/src/test/resources/jetty-logging.properties index df14f40cd1b..1047ac8946d 100644 --- a/tests/test-http-client-transport/src/test/resources/jetty-logging.properties +++ b/tests/test-http-client-transport/src/test/resources/jetty-logging.properties @@ -4,4 +4,4 @@ org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog #org.eclipse.jetty.http2.LEVEL=DEBUG #org.eclipse.jetty.http2.hpack.LEVEL=INFO #org.eclipse.jetty.http2.client.LEVEL=DEBUG -#org.eclipse.jetty.io.LEVEL=DEBUG \ No newline at end of file +#org.eclipse.jetty.io.LEVEL=DEBUG From 328aeef558bb1075e553de3b782c81f6987dff63 Mon Sep 17 00:00:00 2001 From: WalkerWatch Date: Mon, 12 Feb 2018 13:53:00 -0500 Subject: [PATCH 039/134] Issue #2194 - Updated jetty-documentation pom.xml. Matches changes made in #1858 to ensure links to api documentation work for nightly builds. --- jetty-documentation/pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jetty-documentation/pom.xml b/jetty-documentation/pom.xml index e5aa3d1be25..0241f8a9131 100644 --- a/jetty-documentation/pom.xml +++ b/jetty-documentation/pom.xml @@ -13,6 +13,7 @@ UTF-8 1.5.3 ${project.build.directory}/current + ${project.version} @@ -71,7 +72,7 @@ true true ${project.version} - http://www.eclipse.org/jetty/javadoc/${project.version} + http://www.eclipse.org/jetty/javadoc/${javadoc.version} http://download.eclipse.org/jetty/stable-9/xref ${basedir}/.. https://github.com/eclipse/jetty.project/tree/jetty-9.3.x From a34a17bbf24d72ef0b1ea1982cdd2ddb94d3ab13 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Tue, 13 Feb 2018 14:02:18 +1000 Subject: [PATCH 040/134] add jdk and os to stage labels Signed-off-by: olivier lamy --- Jenkinsfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index f6798a10cb9..9f24c0ffdf0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -24,7 +24,7 @@ def getFullBuild(jdk, os) { try { - stage('Checkout') { + stage('Checkout-'+os+'-'+jdk) { checkout scm } } catch (Exception e) { @@ -34,7 +34,7 @@ def getFullBuild(jdk, os) { try { - stage('Compile') { + stage('Compile-'+os+'-'+jdk) { withEnv(mvnEnv) { timeout(time: 15, unit: 'MINUTES') { sh "mvn -V -B clean install -Dtest=None" @@ -48,7 +48,7 @@ def getFullBuild(jdk, os) { try { - stage('Javadoc') { + stage('Javadoc-'+os+'-'+jdk) { withEnv(mvnEnv) { timeout(time: 20, unit: 'MINUTES') { sh "mvn -V -B javadoc:javadoc" @@ -62,7 +62,7 @@ def getFullBuild(jdk, os) { try { - stage('Test') { + stage('Test-'+os+'-'+jdk) { withEnv(mvnEnv) { timeout(time: 90, unit: 'MINUTES') { // Run test phase / ignore test failures @@ -116,7 +116,7 @@ def getFullBuild(jdk, os) { try { - stage ('Compact3') { + stage ('Compact3-'+os+'-'+jdk) { dir("aggregates/jetty-all-compact3") { withEnv(mvnEnv) { From 9437732be9d14768a4cd3f76133f0ce514aa52c1 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Tue, 13 Feb 2018 16:08:22 +1000 Subject: [PATCH 041/134] use step declarative Signed-off-by: olivier lamy --- Jenkinsfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 9f24c0ffdf0..0d90c25f05b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -68,8 +68,7 @@ def getFullBuild(jdk, os) { // Run test phase / ignore test failures sh "mvn -V -B install -Dmaven.test.failure.ignore=true -Prun-its" // Report failures in the jenkins UI - step([$class: 'JUnitResultArchiver', - testResults: '**/target/surefire-reports/TEST-*.xml']) + junit testResults:'**/target/surefire-reports/TEST-*.xml' // Collect up the jacoco execution results def jacocoExcludes = // build tools From 21053b9813da4135c25dbd2d2a4f8c66a48f8406 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Tue, 13 Feb 2018 18:02:20 +1000 Subject: [PATCH 042/134] make it more simple Signed-off-by: olivier lamy --- Jenkinsfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 0d90c25f05b..e28ab8c8bf3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -24,7 +24,7 @@ def getFullBuild(jdk, os) { try { - stage('Checkout-'+os+'-'+jdk) { + stage('Checkout') { checkout scm } } catch (Exception e) { @@ -34,7 +34,7 @@ def getFullBuild(jdk, os) { try { - stage('Compile-'+os+'-'+jdk) { + stage('Compile') { withEnv(mvnEnv) { timeout(time: 15, unit: 'MINUTES') { sh "mvn -V -B clean install -Dtest=None" @@ -48,7 +48,7 @@ def getFullBuild(jdk, os) { try { - stage('Javadoc-'+os+'-'+jdk) { + stage('Javadoc') { withEnv(mvnEnv) { timeout(time: 20, unit: 'MINUTES') { sh "mvn -V -B javadoc:javadoc" @@ -62,7 +62,7 @@ def getFullBuild(jdk, os) { try { - stage('Test-'+os+'-'+jdk) { + stage('Test') { withEnv(mvnEnv) { timeout(time: 90, unit: 'MINUTES') { // Run test phase / ignore test failures @@ -115,7 +115,7 @@ def getFullBuild(jdk, os) { try { - stage ('Compact3-'+os+'-'+jdk) { + stage ('Compact3') { dir("aggregates/jetty-all-compact3") { withEnv(mvnEnv) { From d41bcec681441b4123a16f6abb1f0356316cf736 Mon Sep 17 00:00:00 2001 From: WalkerWatch Date: Tue, 13 Feb 2018 09:35:24 -0500 Subject: [PATCH 043/134] Removing Google search from documentation for now. --- .../src/main/docbkx-stylesheet/html/docbook.xsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jetty-documentation/src/main/docbkx-stylesheet/html/docbook.xsl b/jetty-documentation/src/main/docbkx-stylesheet/html/docbook.xsl index eeadaa81667..7a26ae27a55 100644 --- a/jetty-documentation/src/main/docbkx-stylesheet/html/docbook.xsl +++ b/jetty-documentation/src/main/docbkx-stylesheet/html/docbook.xsl @@ -129,7 +129,7 @@ xmlns:date="http://exslt.org/dates-and-times"
    -