From a41b9954d1977b73d44b3eb92c1507af710c5a76 Mon Sep 17 00:00:00 2001 From: Shalin Shekhar Mangar Date: Mon, 5 Jan 2015 15:45:58 +0000 Subject: [PATCH] SOLR-4839: Upgrade to Jetty 9 git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1649552 13f79535-47bb-0310-9956-ffa450edef68 --- .../maven/lucene/replicator/pom.xml.template | 5 - dev-tools/maven/solr/pom.xml.template | 1 - lucene/common-build.xml | 1 - lucene/ivy-versions.properties | 7 +- ...tty-continuation-8.1.10.v20130312.jar.sha1 | 1 - ...etty-continuation-9.2.6.v20141205.jar.sha1 | 1 + .../jetty-http-8.1.10.v20130312.jar.sha1 | 1 - .../jetty-http-9.2.6.v20141205.jar.sha1 | 1 + .../jetty-io-8.1.10.v20130312.jar.sha1 | 1 - .../jetty-io-9.2.6.v20141205.jar.sha1 | 1 + .../jetty-server-8.1.10.v20130312.jar.sha1 | 1 - .../jetty-server-9.2.6.v20141205.jar.sha1 | 1 + .../jetty-servlet-8.1.10.v20130312.jar.sha1 | 1 - .../jetty-servlet-9.2.6.v20141205.jar.sha1 | 1 + .../jetty-util-8.1.10.v20130312.jar.sha1 | 1 - .../jetty-util-9.2.6.v20141205.jar.sha1 | 1 + .../lucene/replicator/ReplicatorTestCase.java | 64 +++++----- solr/CHANGES.txt | 4 + solr/bin/solr | 1 + .../solrj/embedded/JettySolrRunner.java | 110 +++++++++--------- .../solr/servlet/SolrRequestParserTest.java | 66 +++++++++-- .../licenses/javax.servlet-api-3.0.1.jar.sha1 | 1 - .../licenses/javax.servlet-api-3.1.0.jar.sha1 | 1 + ...tty-continuation-8.1.10.v20130312.jar.sha1 | 1 - ...etty-continuation-9.2.6.v20141205.jar.sha1 | 1 + .../jetty-deploy-8.1.10.v20130312.jar.sha1 | 1 - .../jetty-deploy-9.2.6.v20141205.jar.sha1 | 1 + .../jetty-http-8.1.10.v20130312.jar.sha1 | 1 - .../jetty-http-9.2.6.v20141205.jar.sha1 | 1 + .../jetty-io-8.1.10.v20130312.jar.sha1 | 1 - .../jetty-io-9.2.6.v20141205.jar.sha1 | 1 + .../jetty-jmx-8.1.10.v20130312.jar.sha1 | 1 - .../jetty-jmx-9.2.6.v20141205.jar.sha1 | 1 + .../jetty-security-8.1.10.v20130312.jar.sha1 | 1 - .../jetty-security-9.2.6.v20141205.jar.sha1 | 1 + .../jetty-server-8.1.10.v20130312.jar.sha1 | 1 - .../jetty-server-9.2.6.v20141205.jar.sha1 | 1 + .../jetty-servlet-8.1.10.v20130312.jar.sha1 | 1 - .../jetty-servlet-9.2.6.v20141205.jar.sha1 | 1 + .../jetty-servlets-9.2.6.v20141205.jar.sha1 | 1 + .../jetty-util-8.1.10.v20130312.jar.sha1 | 1 - .../jetty-util-9.2.6.v20141205.jar.sha1 | 1 + .../jetty-webapp-8.1.10.v20130312.jar.sha1 | 1 - .../jetty-webapp-9.2.6.v20141205.jar.sha1 | 1 + .../jetty-xml-8.1.10.v20130312.jar.sha1 | 1 - .../jetty-xml-9.2.6.v20141205.jar.sha1 | 1 + solr/licenses/org.restlet-2.1.1.jar.sha1 | 1 - solr/licenses/org.restlet-2.3.0.jar.sha1 | 1 + .../org.restlet.ext.servlet-2.1.1.jar.sha1 | 1 - .../org.restlet.ext.servlet-2.3.0.jar.sha1 | 1 + solr/licenses/start.jar.sha1 | 2 +- solr/server/contexts/solr-jetty-context.xml | 10 +- solr/server/etc/jetty-http.xml | 75 ++++++++++++ solr/server/etc/jetty-https.xml | 45 +++++++ solr/server/etc/jetty-ssl.xml | 95 +++++++++++++++ solr/server/etc/jetty.xml | 81 ++----------- solr/server/ivy.xml | 3 + solr/server/modules/http.mod | 26 +++++ solr/server/modules/https.mod | 36 ++++++ solr/server/modules/server.mod | 33 ++++++ solr/server/modules/ssl.mod | 57 +++++++++ .../server/resources/jetty-logging.properties | 18 +++ solr/server/start.ini | 11 ++ .../solr/client/solrj/StartSolrJetty.java | 7 +- .../solrj/embedded/JettyWebappTest.java | 7 +- 65 files changed, 597 insertions(+), 209 deletions(-) delete mode 100644 lucene/licenses/jetty-continuation-8.1.10.v20130312.jar.sha1 create mode 100644 lucene/licenses/jetty-continuation-9.2.6.v20141205.jar.sha1 delete mode 100644 lucene/licenses/jetty-http-8.1.10.v20130312.jar.sha1 create mode 100644 lucene/licenses/jetty-http-9.2.6.v20141205.jar.sha1 delete mode 100644 lucene/licenses/jetty-io-8.1.10.v20130312.jar.sha1 create mode 100644 lucene/licenses/jetty-io-9.2.6.v20141205.jar.sha1 delete mode 100644 lucene/licenses/jetty-server-8.1.10.v20130312.jar.sha1 create mode 100644 lucene/licenses/jetty-server-9.2.6.v20141205.jar.sha1 delete mode 100644 lucene/licenses/jetty-servlet-8.1.10.v20130312.jar.sha1 create mode 100644 lucene/licenses/jetty-servlet-9.2.6.v20141205.jar.sha1 delete mode 100644 lucene/licenses/jetty-util-8.1.10.v20130312.jar.sha1 create mode 100644 lucene/licenses/jetty-util-9.2.6.v20141205.jar.sha1 delete mode 100644 solr/licenses/javax.servlet-api-3.0.1.jar.sha1 create mode 100644 solr/licenses/javax.servlet-api-3.1.0.jar.sha1 delete mode 100644 solr/licenses/jetty-continuation-8.1.10.v20130312.jar.sha1 create mode 100644 solr/licenses/jetty-continuation-9.2.6.v20141205.jar.sha1 delete mode 100644 solr/licenses/jetty-deploy-8.1.10.v20130312.jar.sha1 create mode 100644 solr/licenses/jetty-deploy-9.2.6.v20141205.jar.sha1 delete mode 100644 solr/licenses/jetty-http-8.1.10.v20130312.jar.sha1 create mode 100644 solr/licenses/jetty-http-9.2.6.v20141205.jar.sha1 delete mode 100644 solr/licenses/jetty-io-8.1.10.v20130312.jar.sha1 create mode 100644 solr/licenses/jetty-io-9.2.6.v20141205.jar.sha1 delete mode 100644 solr/licenses/jetty-jmx-8.1.10.v20130312.jar.sha1 create mode 100644 solr/licenses/jetty-jmx-9.2.6.v20141205.jar.sha1 delete mode 100644 solr/licenses/jetty-security-8.1.10.v20130312.jar.sha1 create mode 100644 solr/licenses/jetty-security-9.2.6.v20141205.jar.sha1 delete mode 100644 solr/licenses/jetty-server-8.1.10.v20130312.jar.sha1 create mode 100644 solr/licenses/jetty-server-9.2.6.v20141205.jar.sha1 delete mode 100644 solr/licenses/jetty-servlet-8.1.10.v20130312.jar.sha1 create mode 100644 solr/licenses/jetty-servlet-9.2.6.v20141205.jar.sha1 create mode 100644 solr/licenses/jetty-servlets-9.2.6.v20141205.jar.sha1 delete mode 100644 solr/licenses/jetty-util-8.1.10.v20130312.jar.sha1 create mode 100644 solr/licenses/jetty-util-9.2.6.v20141205.jar.sha1 delete mode 100644 solr/licenses/jetty-webapp-8.1.10.v20130312.jar.sha1 create mode 100644 solr/licenses/jetty-webapp-9.2.6.v20141205.jar.sha1 delete mode 100644 solr/licenses/jetty-xml-8.1.10.v20130312.jar.sha1 create mode 100644 solr/licenses/jetty-xml-9.2.6.v20141205.jar.sha1 delete mode 100644 solr/licenses/org.restlet-2.1.1.jar.sha1 create mode 100644 solr/licenses/org.restlet-2.3.0.jar.sha1 delete mode 100644 solr/licenses/org.restlet.ext.servlet-2.1.1.jar.sha1 create mode 100644 solr/licenses/org.restlet.ext.servlet-2.3.0.jar.sha1 create mode 100644 solr/server/etc/jetty-http.xml create mode 100644 solr/server/etc/jetty-https.xml create mode 100644 solr/server/etc/jetty-ssl.xml create mode 100644 solr/server/modules/http.mod create mode 100644 solr/server/modules/https.mod create mode 100644 solr/server/modules/server.mod create mode 100644 solr/server/modules/ssl.mod create mode 100644 solr/server/resources/jetty-logging.properties create mode 100644 solr/server/start.ini diff --git a/dev-tools/maven/lucene/replicator/pom.xml.template b/dev-tools/maven/lucene/replicator/pom.xml.template index 1f287b7ecf6..60d00852cfd 100644 --- a/dev-tools/maven/lucene/replicator/pom.xml.template +++ b/dev-tools/maven/lucene/replicator/pom.xml.template @@ -68,11 +68,6 @@ org.apache.maven.plugins maven-surefire-plugin - - - ${tests.jettyConnector} - - diff --git a/dev-tools/maven/solr/pom.xml.template b/dev-tools/maven/solr/pom.xml.template index c2fd1a12cef..518748d3ba8 100644 --- a/dev-tools/maven/solr/pom.xml.template +++ b/dev-tools/maven/solr/pom.xml.template @@ -103,7 +103,6 @@ maven-surefire-plugin - ${tests.jettyConnector} ${tests.disableHdfs} diff --git a/lucene/common-build.xml b/lucene/common-build.xml index c7975d30a90..478ead50ab9 100644 --- a/lucene/common-build.xml +++ b/lucene/common-build.xml @@ -1036,7 +1036,6 @@ - diff --git a/lucene/ivy-versions.properties b/lucene/ivy-versions.properties index f94ece483df..d32b9e846f7 100644 --- a/lucene/ivy-versions.properties +++ b/lucene/ivy-versions.properties @@ -70,7 +70,7 @@ com.sun.jersey.version = 1.9 /jakarta-regexp/jakarta-regexp = 1.4 /javax.activation/activation = 1.1.1 /javax.inject/javax.inject= 1 -/javax.servlet/javax.servlet-api = 3.0.1 +/javax.servlet/javax.servlet-api = 3.1.0 /javax.servlet/servlet-api = 2.4 /jdom/jdom = 1.0 /joda-time/joda-time = 2.2 @@ -178,7 +178,7 @@ org.codehaus.jackson.version = 1.9.13 /org.easymock/easymock = 3.0 /org.eclipse.jetty.orbit/javax.servlet = 3.0.0.v201112011016 -org.eclipse.jetty.version = 8.1.10.v20130312 +org.eclipse.jetty.version = 9.2.6.v20141205 /org.eclipse.jetty/jetty-continuation = ${org.eclipse.jetty.version} /org.eclipse.jetty/jetty-deploy = ${org.eclipse.jetty.version} /org.eclipse.jetty/jetty-http = ${org.eclipse.jetty.version} @@ -187,6 +187,7 @@ org.eclipse.jetty.version = 8.1.10.v20130312 /org.eclipse.jetty/jetty-security = ${org.eclipse.jetty.version} /org.eclipse.jetty/jetty-server = ${org.eclipse.jetty.version} /org.eclipse.jetty/jetty-servlet = ${org.eclipse.jetty.version} +/org.eclipse.jetty/jetty-servlets = ${org.eclipse.jetty.version} /org.eclipse.jetty/jetty-start = ${org.eclipse.jetty.version} /org.eclipse.jetty/jetty-util = ${org.eclipse.jetty.version} /org.eclipse.jetty/jetty-webapp = ${org.eclipse.jetty.version} @@ -219,7 +220,7 @@ org.ow2.asm.version = 4.1 /org.ow2.asm/asm = ${org.ow2.asm.version} /org.ow2.asm/asm-commons = ${org.ow2.asm.version} -org.restlet.jee.version = 2.1.1 +org.restlet.jee.version = 2.3.0 /org.restlet.jee/org.restlet = ${org.restlet.jee.version} /org.restlet.jee/org.restlet.ext.servlet = ${org.restlet.jee.version} diff --git a/lucene/licenses/jetty-continuation-8.1.10.v20130312.jar.sha1 b/lucene/licenses/jetty-continuation-8.1.10.v20130312.jar.sha1 deleted file mode 100644 index 40d32c2e00f..00000000000 --- a/lucene/licenses/jetty-continuation-8.1.10.v20130312.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -c0e26574ddcac7a86486f19a8b3782657acfd961 diff --git a/lucene/licenses/jetty-continuation-9.2.6.v20141205.jar.sha1 b/lucene/licenses/jetty-continuation-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..6566b24a6cb --- /dev/null +++ b/lucene/licenses/jetty-continuation-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +74ca2679e461e7e9b5fdffcf9685575a7d5f5c8e diff --git a/lucene/licenses/jetty-http-8.1.10.v20130312.jar.sha1 b/lucene/licenses/jetty-http-8.1.10.v20130312.jar.sha1 deleted file mode 100644 index 7cc91649c4e..00000000000 --- a/lucene/licenses/jetty-http-8.1.10.v20130312.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -d9eb53007e04d6338f12f3ded60fad1f7bfcb40e diff --git a/lucene/licenses/jetty-http-9.2.6.v20141205.jar.sha1 b/lucene/licenses/jetty-http-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..eee8f10c15f --- /dev/null +++ b/lucene/licenses/jetty-http-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +5484771191612c1f5a57466865b7014ff56886ce diff --git a/lucene/licenses/jetty-io-8.1.10.v20130312.jar.sha1 b/lucene/licenses/jetty-io-8.1.10.v20130312.jar.sha1 deleted file mode 100644 index 2ba8e66bf24..00000000000 --- a/lucene/licenses/jetty-io-8.1.10.v20130312.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -e829c768f2b9de5d9fae3bc0aba3996bd0344f56 diff --git a/lucene/licenses/jetty-io-9.2.6.v20141205.jar.sha1 b/lucene/licenses/jetty-io-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..bc69203d6eb --- /dev/null +++ b/lucene/licenses/jetty-io-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +11b84cc7078745fca844bd2fb95c2b4f818eafc2 diff --git a/lucene/licenses/jetty-server-8.1.10.v20130312.jar.sha1 b/lucene/licenses/jetty-server-8.1.10.v20130312.jar.sha1 deleted file mode 100644 index 2674565b8f6..00000000000 --- a/lucene/licenses/jetty-server-8.1.10.v20130312.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -13ca9587bc1645f8fac89454b15252a2ad5bdcf5 diff --git a/lucene/licenses/jetty-server-9.2.6.v20141205.jar.sha1 b/lucene/licenses/jetty-server-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..bba3d066e56 --- /dev/null +++ b/lucene/licenses/jetty-server-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +5960eb385ded42360045447185a0510365f811dc diff --git a/lucene/licenses/jetty-servlet-8.1.10.v20130312.jar.sha1 b/lucene/licenses/jetty-servlet-8.1.10.v20130312.jar.sha1 deleted file mode 100644 index ac4faaac6ca..00000000000 --- a/lucene/licenses/jetty-servlet-8.1.10.v20130312.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -98f8029fe7236e9c66381c04f292b5319f47ca84 diff --git a/lucene/licenses/jetty-servlet-9.2.6.v20141205.jar.sha1 b/lucene/licenses/jetty-servlet-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..c29ef43e874 --- /dev/null +++ b/lucene/licenses/jetty-servlet-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +026aa018ef20780e8a900ae7fc95f59884d3095b diff --git a/lucene/licenses/jetty-util-8.1.10.v20130312.jar.sha1 b/lucene/licenses/jetty-util-8.1.10.v20130312.jar.sha1 deleted file mode 100644 index cff356ddd4e..00000000000 --- a/lucene/licenses/jetty-util-8.1.10.v20130312.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -d198a8ad8ea20b4fb74c781175c48500ec2b8b7a diff --git a/lucene/licenses/jetty-util-9.2.6.v20141205.jar.sha1 b/lucene/licenses/jetty-util-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..6da0dcc040c --- /dev/null +++ b/lucene/licenses/jetty-util-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +fdfa0b969d99a2dfb2a46c0ff00251d7e6c7b2bb diff --git a/lucene/replicator/src/test/org/apache/lucene/replicator/ReplicatorTestCase.java b/lucene/replicator/src/test/org/apache/lucene/replicator/ReplicatorTestCase.java index aca90b7d347..410d551da44 100644 --- a/lucene/replicator/src/test/org/apache/lucene/replicator/ReplicatorTestCase.java +++ b/lucene/replicator/src/test/org/apache/lucene/replicator/ReplicatorTestCase.java @@ -18,18 +18,20 @@ package org.apache.lucene.replicator; */ import java.util.Random; +import java.util.concurrent.TimeUnit; import org.apache.http.conn.HttpClientConnectionManager; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.lucene.util.LuceneTestCase; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Handler; +import org.eclipse.jetty.server.HttpConfiguration; +import org.eclipse.jetty.server.HttpConnectionFactory; +import org.eclipse.jetty.server.SecureRequestCustomizer; import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.bio.SocketConnector; -import org.eclipse.jetty.server.nio.SelectChannelConnector; +import org.eclipse.jetty.server.ServerConnector; +import org.eclipse.jetty.server.SslConnectionFactory; import org.eclipse.jetty.server.session.HashSessionIdManager; -import org.eclipse.jetty.server.ssl.SslSelectChannelConnector; -import org.eclipse.jetty.server.ssl.SslSocketConnector; import org.eclipse.jetty.util.ssl.SslContextFactory; import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.junit.AfterClass; @@ -51,12 +53,6 @@ public abstract class ReplicatorTestCase extends LuceneTestCase { * {@link #serverPort(Server)}. */ public static synchronized Server newHttpServer(Handler handler) throws Exception { - Server server = new Server(0); - - server.setHandler(handler); - - final String connectorName = System.getProperty("tests.jettyConnector", "SelectChannel"); - // if this property is true, then jetty will be configured to use SSL // leveraging the same system properties as java to specify // the keystore/truststore if they are set @@ -78,7 +74,7 @@ public abstract class ReplicatorTestCase extends LuceneTestCase { (System.getProperty("javax.net.ssl.keyStorePassword")); } if (null != System.getProperty("javax.net.ssl.trustStore")) { - sslcontext.setTrustStore + sslcontext.setKeyStorePath (System.getProperty("javax.net.ssl.trustStore")); } if (null != System.getProperty("javax.net.ssl.trustStorePassword")) { @@ -88,34 +84,36 @@ public abstract class ReplicatorTestCase extends LuceneTestCase { sslcontext.setNeedClientAuth(Boolean.getBoolean("tests.jettySsl.clientAuth")); } - final Connector connector; - final QueuedThreadPool threadPool; - if ("SelectChannel".equals(connectorName)) { - final SelectChannelConnector c = useSsl ? new SslSelectChannelConnector(sslcontext) : new SelectChannelConnector(); - c.setReuseAddress(true); - c.setLowResourcesMaxIdleTime(1500); + final QueuedThreadPool threadPool = new QueuedThreadPool(); + threadPool.setDaemon(true); + threadPool.setMaxThreads(10000); + threadPool.setIdleTimeout(5000); + threadPool.setStopTimeout(30000); + + Server server = new Server(threadPool); + server.setStopAtShutdown(true); + server.manage(threadPool); + + + final ServerConnector connector; + if (useSsl) { + HttpConfiguration configuration = new HttpConfiguration(); + configuration.setSecureScheme("https"); + configuration.addCustomizer(new SecureRequestCustomizer()); + ServerConnector c = new ServerConnector(server, new SslConnectionFactory(sslcontext, "http/1.1"), + new HttpConnectionFactory(configuration)); connector = c; - threadPool = (QueuedThreadPool) c.getThreadPool(); - } else if ("Socket".equals(connectorName)) { - final SocketConnector c = useSsl ? new SslSocketConnector(sslcontext) : new SocketConnector(); - c.setReuseAddress(true); - connector = c; - threadPool = (QueuedThreadPool) c.getThreadPool(); } else { - throw new IllegalArgumentException("Illegal value for system property 'tests.jettyConnector': " + connectorName); + ServerConnector c = new ServerConnector(server, new HttpConnectionFactory()); + connector = c; } connector.setPort(0); connector.setHost("127.0.0.1"); - if (threadPool != null) { - threadPool.setDaemon(true); - threadPool.setMaxThreads(10000); - threadPool.setMaxIdleTimeMs(5000); - threadPool.setMaxStopTimeMs(30000); - } - + server.setConnectors(new Connector[] {connector}); server.setSessionIdManager(new HashSessionIdManager(new Random(random().nextLong()))); + server.setHandler(handler); server.start(); @@ -124,12 +122,12 @@ public abstract class ReplicatorTestCase extends LuceneTestCase { /** Returns a {@link Server}'s port. */ public static int serverPort(Server server) { - return server.getConnectors()[0].getLocalPort(); + return ((ServerConnector)server.getConnectors()[0]).getLocalPort(); } /** Returns a {@link Server}'s host. */ public static String serverHost(Server server) { - return server.getConnectors()[0].getHost(); + return ((ServerConnector)server.getConnectors()[0]).getHost(); } /** diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index dc6aa364556..5a836721ab1 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -62,6 +62,7 @@ Carrot2 3.9.0 Velocity 1.7 and Velocity Tools 2.0 Apache UIMA 2.3.1 Apache ZooKeeper 3.4.6 +Jetty 9.2.6.v20141205 Upgrading from Solr 4.x ---------------------- @@ -626,6 +627,9 @@ Other Changes * SOLR-6905: Test pseudo-field retrieval in distributed search. (Ramkumar Aiyengar via shalin) +* SOLR-4839: Upgrade Jetty to 9.2.6.v20141205 and restlet-jee to 2.3.0 + (Bill Bell, Timothy Potter, Uwe Schindler, shalin) + ================== 4.10.3 ================== Bug Fixes diff --git a/solr/bin/solr b/solr/bin/solr index 1af990ae18d..1af1354f2cc 100755 --- a/solr/bin/solr +++ b/solr/bin/solr @@ -1138,6 +1138,7 @@ function launch_solr() { SOLR_START_OPTS="-server -Xss256k $SOLR_JAVA_MEM $GC_TUNE $GC_LOG_OPTS $REMOTE_JMX_OPTS \ $CLOUD_MODE_OPTS \ +-Djetty.home=$SOLR_SERVER_DIR -DSTOP.PORT=$stop_port -DSTOP.KEY=$STOP_KEY \ $SOLR_HOST_ARG -Djetty.port=$SOLR_PORT \ -Dsolr.solr.home=$SOLR_HOME \ diff --git a/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java b/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java index 72adbcd3f38..a34691a2c60 100644 --- a/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java +++ b/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java @@ -19,17 +19,19 @@ package org.apache.solr.client.solrj.embedded; import org.apache.solr.servlet.SolrDispatchFilter; import org.eclipse.jetty.server.Connector; +import org.eclipse.jetty.server.HttpConfiguration; +import org.eclipse.jetty.server.HttpConnectionFactory; +import org.eclipse.jetty.server.LowResourceMonitor; +import org.eclipse.jetty.server.SecureRequestCustomizer; import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.bio.SocketConnector; -import org.eclipse.jetty.server.handler.GzipHandler; -import org.eclipse.jetty.server.nio.SelectChannelConnector; +import org.eclipse.jetty.server.ServerConnector; +import org.eclipse.jetty.server.SslConnectionFactory; import org.eclipse.jetty.server.session.HashSessionIdManager; -import org.eclipse.jetty.server.ssl.SslConnector; -import org.eclipse.jetty.server.ssl.SslSelectChannelConnector; -import org.eclipse.jetty.server.ssl.SslSocketConnector; import org.eclipse.jetty.servlet.FilterHolder; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; +import org.eclipse.jetty.servlets.GzipFilter; +import org.eclipse.jetty.servlets.gzip.GzipHandler; import org.eclipse.jetty.util.component.LifeCycle; import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.ssl.SslContextFactory; @@ -202,18 +204,11 @@ public class JettySolrRunner { private void init(String solrHome, String context, int port, boolean stopAtShutdown) { this.context = context; - server = new Server(port); this.solrHome = solrHome; this.stopAtShutdown = stopAtShutdown; - server.setStopAtShutdown(stopAtShutdown); - if (!stopAtShutdown) { - server.setGracefulShutdown(0); - } System.setProperty("solr.solr.home", solrHome); if (System.getProperty("jetty.testMode") != null) { - final String connectorName = System.getProperty("tests.jettyConnector", "SelectChannel"); - // if this property is true, then jetty will be configured to use SSL // leveraging the same system properties as java to specify // the keystore/truststore if they are set unless specific config @@ -227,52 +222,56 @@ public class JettySolrRunner { final SslContextFactory sslcontext = new SslContextFactory(false); sslInit(useSsl, sslcontext); - final Connector connector; - if ("SelectChannel".equals(connectorName)) { - final SelectChannelConnector c = useSsl - ? new SslSelectChannelConnector(sslcontext) - : new SelectChannelConnector(); - c.setReuseAddress(true); - c.setLowResourcesMaxIdleTime(1500); - c.setSoLingerTime(0); - connector = c; - } else if ("Socket".equals(connectorName)) { - final SocketConnector c = useSsl - ? new SslSocketConnector(sslcontext) - : new SocketConnector(); - c.setReuseAddress(true); - c.setSoLingerTime(0); - connector = c; + QueuedThreadPool qtp = new QueuedThreadPool(); + qtp.setMaxThreads(10000); + qtp.setIdleTimeout((int) TimeUnit.SECONDS.toMillis(5)); + qtp.setStopTimeout((int) TimeUnit.MINUTES.toMillis(1)); + + server = new Server(qtp); + server.setStopAtShutdown(stopAtShutdown); + server.manage(qtp); + + ServerConnector connector; + if (useSsl) { + HttpConfiguration configuration = new HttpConfiguration(); + configuration.setSecureScheme("https"); + configuration.addCustomizer(new SecureRequestCustomizer()); + connector = new ServerConnector(server, new SslConnectionFactory(sslcontext, "http/1.1"), + new HttpConnectionFactory(configuration)); } else { - throw new IllegalArgumentException("Illegal value for system property 'tests.jettyConnector': " + connectorName); + connector = new ServerConnector(server, new HttpConnectionFactory()); } + connector.setReuseAddress(true); + connector.setSoLingerTime(0); connector.setPort(port); connector.setHost("127.0.0.1"); - // Connectors by default inherit server's thread pool. - QueuedThreadPool qtp = new QueuedThreadPool(); - qtp.setMaxThreads(10000); - qtp.setMaxIdleTimeMs((int) TimeUnit.MILLISECONDS.toMillis(200)); - qtp.setMaxStopTimeMs((int) TimeUnit.MINUTES.toMillis(1)); - server.setThreadPool(qtp); + // Enable Low Resources Management + LowResourceMonitor lowResources = new LowResourceMonitor(server); + lowResources.setLowResourcesIdleTimeout(1500); + lowResources.setMaxConnections(10000); + server.addBean(lowResources); server.setConnectors(new Connector[] {connector}); server.setSessionIdManager(new HashSessionIdManager(new Random())); } else { - if (server.getThreadPool() == null) { - // Connectors by default inherit server's thread pool. - QueuedThreadPool qtp = new QueuedThreadPool(); - qtp.setMaxThreads(10000); - qtp.setMaxIdleTimeMs((int) TimeUnit.SECONDS.toMillis(5)); - qtp.setMaxStopTimeMs((int) TimeUnit.SECONDS.toMillis(1)); - server.setThreadPool(qtp); - } + ServerConnector connector = new ServerConnector(server, new HttpConnectionFactory()); + connector.setPort(port); + + QueuedThreadPool qtp = new QueuedThreadPool(); + qtp.setMaxThreads(10000); + qtp.setIdleTimeout((int) TimeUnit.SECONDS.toMillis(5)); + qtp.setStopTimeout((int) TimeUnit.SECONDS.toMillis(1)); + + server = new Server(qtp); + server.setStopAtShutdown(stopAtShutdown); + server.manage(qtp); } // Initialize the servlets - final ServletContextHandler root = new ServletContextHandler(server,context,ServletContextHandler.SESSIONS); - root.setHandler(new GzipHandler()); + final ServletContextHandler root = new ServletContextHandler(server, context, ServletContextHandler.SESSIONS); + root.addFilter(GzipFilter.class, "*", EnumSet.of(DispatcherType.REQUEST)); server.addLifeCycleListener(new LifeCycle.Listener() { @Override @@ -309,11 +308,11 @@ public class JettySolrRunner { EnumSet.of(DispatcherType.REQUEST))); } } - dispatchFilter = root.addFilter(SolrDispatchFilter.class, "*", EnumSet.of(DispatcherType.REQUEST) ); for (ServletHolder servletHolder : extraServlets.keySet()) { String pathSpec = extraServlets.get(servletHolder); root.addServlet(servletHolder, pathSpec); } + dispatchFilter = root.addFilter(SolrDispatchFilter.class, "*", EnumSet.of(DispatcherType.REQUEST) ); if (solrConfigFilename != null) System.clearProperty("solrconfig"); if (schemaFilename != null) System.clearProperty("schema"); System.clearProperty("solr.solr.home"); @@ -339,7 +338,7 @@ public class JettySolrRunner { sslcontext.setKeyStorePassword(sslConfig.getKeyStorePassword()); } if (null != sslConfig.getTrustStore()) { - sslcontext.setTrustStore(System + sslcontext.setTrustStorePath(System .getProperty(sslConfig.getTrustStore())); } if (null != sslConfig.getTrustStorePassword()) { @@ -359,7 +358,7 @@ public class JettySolrRunner { (System.getProperty("javax.net.ssl.keyStorePassword")); } if (null != System.getProperty("javax.net.ssl.trustStore")) { - sslcontext.setTrustStore + sslcontext.setTrustStorePath (System.getProperty("javax.net.ssl.trustStore")); } if (null != System.getProperty("javax.net.ssl.trustStorePassword")) { @@ -464,7 +463,7 @@ public class JettySolrRunner { if (0 == conns.length) { throw new RuntimeException("Jetty Server has no Connectors"); } - return (proxyPort != -1) ? proxyPort : conns[0].getLocalPort(); + return (proxyPort != -1) ? proxyPort : ((ServerConnector) conns[0]).getLocalPort(); } /** @@ -489,7 +488,7 @@ public class JettySolrRunner { } /** - * Returns a base URL consisting of the protocal, host, and port for a + * Returns a base URL consisting of the protocol, host, and port for a * Connector in use by the Jetty Server contained in this runner. */ public URL getBaseUrl() { @@ -499,12 +498,12 @@ public class JettySolrRunner { if (0 == conns.length) { throw new IllegalStateException("Jetty Server has no Connectors"); } - Connector c = conns[0]; + ServerConnector c = (ServerConnector) conns[0]; if (c.getLocalPort() < 0) { throw new IllegalStateException("Jetty Connector is not open: " + c.getLocalPort()); } - protocol = (c instanceof SslConnector) ? "https" : "http"; + protocol = c.getDefaultProtocol().equals("SSL-http/1.1") ? "https" : "http"; return new URL(protocol, c.getHost(), c.getLocalPort(), context); } catch (MalformedURLException e) { @@ -614,6 +613,11 @@ class NoLog implements Logger { } + @Override + public void debug(String s, long l) { + + } + @Override public String getName() { return toString(); diff --git a/solr/core/src/test/org/apache/solr/servlet/SolrRequestParserTest.java b/solr/core/src/test/org/apache/solr/servlet/SolrRequestParserTest.java index dcd0904cd2b..08e3baa3a9b 100644 --- a/solr/core/src/test/org/apache/solr/servlet/SolrRequestParserTest.java +++ b/solr/core/src/test/org/apache/solr/servlet/SolrRequestParserTest.java @@ -22,7 +22,9 @@ import static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.replay; +import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; +import java.io.IOException; import java.net.HttpURLConnection; import java.net.SocketTimeoutException; import java.net.URL; @@ -34,6 +36,7 @@ import java.util.List; import java.util.Map; import java.util.Vector; +import javax.servlet.ReadListener; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; @@ -225,10 +228,7 @@ public class SolrRequestParserTest extends SolrTestCaseJ4 { expect(request.getContentType()).andReturn( contentType ).anyTimes(); expect(request.getQueryString()).andReturn(getParams).anyTimes(); expect(request.getContentLength()).andReturn(postBytes.length).anyTimes(); - expect(request.getInputStream()).andReturn(new ServletInputStream() { - private final ByteArrayInputStream in = new ByteArrayInputStream(postBytes); - @Override public int read() { return in.read(); } - }); + expect(request.getInputStream()).andReturn(new ByteServletInputStream(postBytes)); replay(request); MultipartRequestParser multipart = new MultipartRequestParser( 2048 ); @@ -243,6 +243,39 @@ public class SolrRequestParserTest extends SolrTestCaseJ4 { assertArrayEquals( "contentType: "+contentType, new String[]{"foo","bar"}, p.getParams("dup") ); } } + + static class ByteServletInputStream extends ServletInputStream { + final BufferedInputStream in; + final int len; + int readCount = 0; + + public ByteServletInputStream(byte[] data) { + this.len = data.length; + this.in = new BufferedInputStream(new ByteArrayInputStream(data)); + } + + @Override + public boolean isFinished() { + return readCount == len; + } + + @Override + public boolean isReady() { + return true; + } + + @Override + public void setReadListener(ReadListener readListener) { + throw new IllegalStateException("Not supported"); + } + + @Override + public int read() throws IOException { + int read = in.read(); + readCount += read; + return read; + } + } @Test public void testStandardParseParamsAndFillStreamsISO88591() throws Exception @@ -257,10 +290,7 @@ public class SolrRequestParserTest extends SolrTestCaseJ4 { expect(request.getContentType()).andReturn( contentType ).anyTimes(); expect(request.getQueryString()).andReturn(getParams).anyTimes(); expect(request.getContentLength()).andReturn(postBytes.length).anyTimes(); - expect(request.getInputStream()).andReturn(new ServletInputStream() { - private final ByteArrayInputStream in = new ByteArrayInputStream(postBytes); - @Override public int read() { return in.read(); } - }); + expect(request.getInputStream()).andReturn(new ByteServletInputStream(postBytes)); replay(request); MultipartRequestParser multipart = new MultipartRequestParser( 2048 ); @@ -292,10 +322,7 @@ public class SolrRequestParserTest extends SolrTestCaseJ4 { // we dont pass a content-length to let the security mechanism limit it: expect(request.getContentLength()).andReturn(-1).anyTimes(); expect(request.getQueryString()).andReturn(null).anyTimes(); - expect(request.getInputStream()).andReturn(new ServletInputStream() { - private final ByteArrayInputStream in = new ByteArrayInputStream(large.toString().getBytes(StandardCharsets.US_ASCII)); - @Override public int read() { return in.read(); } - }); + expect(request.getInputStream()).andReturn(new ByteServletInputStream(large.toString().getBytes(StandardCharsets.US_ASCII))); replay(request); FormDataRequestParser formdata = new FormDataRequestParser( limitKBytes ); @@ -319,6 +346,21 @@ public class SolrRequestParserTest extends SolrTestCaseJ4 { // we emulate Jetty that returns empty stream when parameters were parsed before: expect(request.getInputStream()).andReturn(new ServletInputStream() { @Override public int read() { return -1; } + + @Override + public boolean isFinished() { + return true; + } + + @Override + public boolean isReady() { + return true; + } + + @Override + public void setReadListener(ReadListener readListener) { + + } }); replay(request); diff --git a/solr/licenses/javax.servlet-api-3.0.1.jar.sha1 b/solr/licenses/javax.servlet-api-3.0.1.jar.sha1 deleted file mode 100644 index a660a301f9c..00000000000 --- a/solr/licenses/javax.servlet-api-3.0.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -6bf0ebb7efd993e222fc1112377b5e92a13b38dd diff --git a/solr/licenses/javax.servlet-api-3.1.0.jar.sha1 b/solr/licenses/javax.servlet-api-3.1.0.jar.sha1 new file mode 100644 index 00000000000..a269ca04f74 --- /dev/null +++ b/solr/licenses/javax.servlet-api-3.1.0.jar.sha1 @@ -0,0 +1 @@ +3cd63d075497751784b2fa84be59432f4905bf7c diff --git a/solr/licenses/jetty-continuation-8.1.10.v20130312.jar.sha1 b/solr/licenses/jetty-continuation-8.1.10.v20130312.jar.sha1 deleted file mode 100644 index 40d32c2e00f..00000000000 --- a/solr/licenses/jetty-continuation-8.1.10.v20130312.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -c0e26574ddcac7a86486f19a8b3782657acfd961 diff --git a/solr/licenses/jetty-continuation-9.2.6.v20141205.jar.sha1 b/solr/licenses/jetty-continuation-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..6566b24a6cb --- /dev/null +++ b/solr/licenses/jetty-continuation-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +74ca2679e461e7e9b5fdffcf9685575a7d5f5c8e diff --git a/solr/licenses/jetty-deploy-8.1.10.v20130312.jar.sha1 b/solr/licenses/jetty-deploy-8.1.10.v20130312.jar.sha1 deleted file mode 100644 index 7262965587b..00000000000 --- a/solr/licenses/jetty-deploy-8.1.10.v20130312.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -875b96ef84e3b83a40b3aac9e473434d6414a389 diff --git a/solr/licenses/jetty-deploy-9.2.6.v20141205.jar.sha1 b/solr/licenses/jetty-deploy-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..c606e908486 --- /dev/null +++ b/solr/licenses/jetty-deploy-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +7ad677c1442dc965b5815f4452848b8eecbc5082 diff --git a/solr/licenses/jetty-http-8.1.10.v20130312.jar.sha1 b/solr/licenses/jetty-http-8.1.10.v20130312.jar.sha1 deleted file mode 100644 index 7cc91649c4e..00000000000 --- a/solr/licenses/jetty-http-8.1.10.v20130312.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -d9eb53007e04d6338f12f3ded60fad1f7bfcb40e diff --git a/solr/licenses/jetty-http-9.2.6.v20141205.jar.sha1 b/solr/licenses/jetty-http-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..eee8f10c15f --- /dev/null +++ b/solr/licenses/jetty-http-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +5484771191612c1f5a57466865b7014ff56886ce diff --git a/solr/licenses/jetty-io-8.1.10.v20130312.jar.sha1 b/solr/licenses/jetty-io-8.1.10.v20130312.jar.sha1 deleted file mode 100644 index 2ba8e66bf24..00000000000 --- a/solr/licenses/jetty-io-8.1.10.v20130312.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -e829c768f2b9de5d9fae3bc0aba3996bd0344f56 diff --git a/solr/licenses/jetty-io-9.2.6.v20141205.jar.sha1 b/solr/licenses/jetty-io-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..bc69203d6eb --- /dev/null +++ b/solr/licenses/jetty-io-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +11b84cc7078745fca844bd2fb95c2b4f818eafc2 diff --git a/solr/licenses/jetty-jmx-8.1.10.v20130312.jar.sha1 b/solr/licenses/jetty-jmx-8.1.10.v20130312.jar.sha1 deleted file mode 100644 index e400550c907..00000000000 --- a/solr/licenses/jetty-jmx-8.1.10.v20130312.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -6e48870e2af2caf2a77751eae3a79bfcf6b90a78 diff --git a/solr/licenses/jetty-jmx-9.2.6.v20141205.jar.sha1 b/solr/licenses/jetty-jmx-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..d62a76e69ea --- /dev/null +++ b/solr/licenses/jetty-jmx-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +53ebf8bd8d151c3c7883e3b23eee9f67ecd716e9 diff --git a/solr/licenses/jetty-security-8.1.10.v20130312.jar.sha1 b/solr/licenses/jetty-security-8.1.10.v20130312.jar.sha1 deleted file mode 100644 index 2de8273372f..00000000000 --- a/solr/licenses/jetty-security-8.1.10.v20130312.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -a386e7f0a8b9157b99a2f29a6deac61e007a2b9b diff --git a/solr/licenses/jetty-security-9.2.6.v20141205.jar.sha1 b/solr/licenses/jetty-security-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..495af06df1e --- /dev/null +++ b/solr/licenses/jetty-security-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +513537c2a4f7d2a44120f4ff5fdc7fc2c8bc9357 diff --git a/solr/licenses/jetty-server-8.1.10.v20130312.jar.sha1 b/solr/licenses/jetty-server-8.1.10.v20130312.jar.sha1 deleted file mode 100644 index 2674565b8f6..00000000000 --- a/solr/licenses/jetty-server-8.1.10.v20130312.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -13ca9587bc1645f8fac89454b15252a2ad5bdcf5 diff --git a/solr/licenses/jetty-server-9.2.6.v20141205.jar.sha1 b/solr/licenses/jetty-server-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..bba3d066e56 --- /dev/null +++ b/solr/licenses/jetty-server-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +5960eb385ded42360045447185a0510365f811dc diff --git a/solr/licenses/jetty-servlet-8.1.10.v20130312.jar.sha1 b/solr/licenses/jetty-servlet-8.1.10.v20130312.jar.sha1 deleted file mode 100644 index ac4faaac6ca..00000000000 --- a/solr/licenses/jetty-servlet-8.1.10.v20130312.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -98f8029fe7236e9c66381c04f292b5319f47ca84 diff --git a/solr/licenses/jetty-servlet-9.2.6.v20141205.jar.sha1 b/solr/licenses/jetty-servlet-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..c29ef43e874 --- /dev/null +++ b/solr/licenses/jetty-servlet-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +026aa018ef20780e8a900ae7fc95f59884d3095b diff --git a/solr/licenses/jetty-servlets-9.2.6.v20141205.jar.sha1 b/solr/licenses/jetty-servlets-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..8396ef25972 --- /dev/null +++ b/solr/licenses/jetty-servlets-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +0e36f5f1d19c48ad1ae6e65172ee472d0ba8b571 diff --git a/solr/licenses/jetty-util-8.1.10.v20130312.jar.sha1 b/solr/licenses/jetty-util-8.1.10.v20130312.jar.sha1 deleted file mode 100644 index cff356ddd4e..00000000000 --- a/solr/licenses/jetty-util-8.1.10.v20130312.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -d198a8ad8ea20b4fb74c781175c48500ec2b8b7a diff --git a/solr/licenses/jetty-util-9.2.6.v20141205.jar.sha1 b/solr/licenses/jetty-util-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..6da0dcc040c --- /dev/null +++ b/solr/licenses/jetty-util-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +fdfa0b969d99a2dfb2a46c0ff00251d7e6c7b2bb diff --git a/solr/licenses/jetty-webapp-8.1.10.v20130312.jar.sha1 b/solr/licenses/jetty-webapp-8.1.10.v20130312.jar.sha1 deleted file mode 100644 index fded150fab4..00000000000 --- a/solr/licenses/jetty-webapp-8.1.10.v20130312.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -a3353244b93e895f1ca8f607077f247063470233 diff --git a/solr/licenses/jetty-webapp-9.2.6.v20141205.jar.sha1 b/solr/licenses/jetty-webapp-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..20c144e2c9c --- /dev/null +++ b/solr/licenses/jetty-webapp-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +68da2c29c6bedac8d502839fea66b91e05077a68 diff --git a/solr/licenses/jetty-xml-8.1.10.v20130312.jar.sha1 b/solr/licenses/jetty-xml-8.1.10.v20130312.jar.sha1 deleted file mode 100644 index db8de90f5d3..00000000000 --- a/solr/licenses/jetty-xml-8.1.10.v20130312.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -96eb17dd4265732b0cb9cd15e36f83633832dd65 diff --git a/solr/licenses/jetty-xml-9.2.6.v20141205.jar.sha1 b/solr/licenses/jetty-xml-9.2.6.v20141205.jar.sha1 new file mode 100644 index 00000000000..dfd78fbbc99 --- /dev/null +++ b/solr/licenses/jetty-xml-9.2.6.v20141205.jar.sha1 @@ -0,0 +1 @@ +2f51a87d2c962257304391aa29e1c0030774c4ac diff --git a/solr/licenses/org.restlet-2.1.1.jar.sha1 b/solr/licenses/org.restlet-2.1.1.jar.sha1 deleted file mode 100644 index 4b0aa1ff96f..00000000000 --- a/solr/licenses/org.restlet-2.1.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -e12c23b962c925f2681729afa1e40066a350ad27 diff --git a/solr/licenses/org.restlet-2.3.0.jar.sha1 b/solr/licenses/org.restlet-2.3.0.jar.sha1 new file mode 100644 index 00000000000..77e949d323e --- /dev/null +++ b/solr/licenses/org.restlet-2.3.0.jar.sha1 @@ -0,0 +1 @@ +4c5d184e23fa729726668a90dc7338d80c4e7e6f diff --git a/solr/licenses/org.restlet.ext.servlet-2.1.1.jar.sha1 b/solr/licenses/org.restlet.ext.servlet-2.1.1.jar.sha1 deleted file mode 100644 index a51aa82c0ec..00000000000 --- a/solr/licenses/org.restlet.ext.servlet-2.1.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -72baf27dc19d98f43c362ded582db408433373ee diff --git a/solr/licenses/org.restlet.ext.servlet-2.3.0.jar.sha1 b/solr/licenses/org.restlet.ext.servlet-2.3.0.jar.sha1 new file mode 100644 index 00000000000..32c31ad33cc --- /dev/null +++ b/solr/licenses/org.restlet.ext.servlet-2.3.0.jar.sha1 @@ -0,0 +1 @@ +9303e20d0397c0304342943560c3a1693fd7ce7d diff --git a/solr/licenses/start.jar.sha1 b/solr/licenses/start.jar.sha1 index a375ce17183..5ef2c26fc1b 100644 --- a/solr/licenses/start.jar.sha1 +++ b/solr/licenses/start.jar.sha1 @@ -1 +1 @@ -8e1a37a8daae3f222d957012f826047497466a56 +6380e0fe5a738cced80ef705dbac3320a8f25edf diff --git a/solr/server/contexts/solr-jetty-context.xml b/solr/server/contexts/solr-jetty-context.xml index 50978a365ff..306cfa0b8f2 100644 --- a/solr/server/contexts/solr-jetty-context.xml +++ b/solr/server/contexts/solr-jetty-context.xml @@ -1,8 +1,8 @@ - + - - /webapps/solr.war - /etc/webdefault.xml - /solr-webapp + + /webapps/solr.war + /etc/webdefault.xml + /solr-webapp diff --git a/solr/server/etc/jetty-http.xml b/solr/server/etc/jetty-http.xml new file mode 100644 index 00000000000..58c542d1ea4 --- /dev/null +++ b/solr/server/etc/jetty-http.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + false + false + + + + + + + + + + + + + \ No newline at end of file diff --git a/solr/server/etc/jetty-https.xml b/solr/server/etc/jetty-https.xml new file mode 100644 index 00000000000..fd060201ee7 --- /dev/null +++ b/solr/server/etc/jetty-https.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + http/1.1 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/solr/server/etc/jetty-ssl.xml b/solr/server/etc/jetty-ssl.xml new file mode 100644 index 00000000000..0a1c25905da --- /dev/null +++ b/solr/server/etc/jetty-ssl.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + / + + + + + + + SSL_RSA_WITH_DES_CBC_SHA + SSL_DHE_RSA_WITH_DES_CBC_SHA + SSL_DHE_DSS_WITH_DES_CBC_SHA + SSL_RSA_EXPORT_WITH_RC4_40_MD5 + SSL_RSA_EXPORT_WITH_DES40_CBC_SHA + SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA + SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/solr/server/etc/jetty.xml b/solr/server/etc/jetty.xml index 7596a6cde7c..f5976ed6537 100644 --- a/solr/server/etc/jetty.xml +++ b/solr/server/etc/jetty.xml @@ -1,5 +1,5 @@ - + @@ -12,54 +12,6 @@ - - - - - - - 10 - 10000 - false - - - - - - - - - - - - - - - - 50000 - 1500 - false - - - - - true - false - false - 1000 false false - - - - + org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern .*/servlet-api-[^/]*\.jar$ - + + + + + /contexts + 0 + + + + +etc/jetty-http.xml \ No newline at end of file diff --git a/solr/server/modules/https.mod b/solr/server/modules/https.mod new file mode 100644 index 00000000000..32fe852e8f3 --- /dev/null +++ b/solr/server/modules/https.mod @@ -0,0 +1,36 @@ +# +# Jetty HTTPS Connector +# + +[depend] +ssl + +[xml] +etc/jetty-https.xml + +[ini-template] +## HTTPS Configuration +# HTTP port to listen on +https.port=8443 +# HTTPS idle timeout in milliseconds +https.timeout=30000 +# HTTPS Socket.soLingerTime in seconds. (-1 to disable) + + +https.soLingerTime=-1 + diff --git a/solr/server/modules/server.mod b/solr/server/modules/server.mod new file mode 100644 index 00000000000..b418f9f4ab6 --- /dev/null +++ b/solr/server/modules/server.mod @@ -0,0 +1,33 @@ +# +# Base Server Module +# + +[optional] +jvm +ext +resources + +[lib] +lib/*.jar +lib/ext/*.jar +resources/ + +[xml] + + +etc/jetty.xml \ No newline at end of file diff --git a/solr/server/modules/ssl.mod b/solr/server/modules/ssl.mod new file mode 100644 index 00000000000..cb420e297d6 --- /dev/null +++ b/solr/server/modules/ssl.mod @@ -0,0 +1,57 @@ +# +# SSL Keystore module +# + +[depend] +server + +[xml] +etc/jetty-ssl.xml + +[files] +http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/plain/jetty-server/src/main/config/etc/keystore|etc/keystore + +[ini-template] +### SSL Keystore Configuration +# define the port to use for secure redirection +jetty.secure.port=8443 + +## Setup a demonstration keystore and truststore +jetty.keystore=etc/keystore +jetty.truststore=etc/keystore + +## Set the demonstration passwords. +## Note that OBF passwords are not secure, just protected from casual observation +## See http://www.eclipse.org/jetty/documentation/current/configuring-security-secure-passwords.html +jetty.keystore.password=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4 +jetty.keymanager.password=OBF:1u2u1wml1z7s1z7a1wnl1u2g +jetty.truststore.password=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4 + +### Set the client auth behavior +## Set to true if client certificate authentication is required +# jetty.ssl.needClientAuth=true +## Set to true if client certificate authentication is desired +# jetty.ssl.wantClientAuth=true + +## Parameters to control the number and priority of acceptors and selectors +# ssl.selectors=1 +# ssl.acceptors=1 +# ssl.selectorPriorityDelta=0 + + +ssl.acceptorPriorityDelta=0 diff --git a/solr/server/resources/jetty-logging.properties b/solr/server/resources/jetty-logging.properties new file mode 100644 index 00000000000..8a2b5e3fbb4 --- /dev/null +++ b/solr/server/resources/jetty-logging.properties @@ -0,0 +1,18 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog \ No newline at end of file diff --git a/solr/server/start.ini b/solr/server/start.ini new file mode 100644 index 00000000000..88518bee47c --- /dev/null +++ b/solr/server/start.ini @@ -0,0 +1,11 @@ +--module=http + +jetty.port=8983 + +jetty.threads.min=10 +jetty.threads.max=10000 +jetty.threads.idle.timeout=50000 + +# jetty.http.acceptors=1 +# jetty.http.selectors=1 + diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/StartSolrJetty.java b/solr/solrj/src/test/org/apache/solr/client/solrj/StartSolrJetty.java index 2d8d565c8f6..3c0b92319c6 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/StartSolrJetty.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/StartSolrJetty.java @@ -18,8 +18,9 @@ package org.apache.solr.client.solrj; import org.eclipse.jetty.server.Connector; +import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.bio.SocketConnector; +import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.webapp.WebAppContext; /** @@ -32,9 +33,9 @@ public class StartSolrJetty //System.setProperty("solr.solr.home", "../../../example/solr"); Server server = new Server(); - SocketConnector connector = new SocketConnector(); + ServerConnector connector = new ServerConnector(server, new HttpConnectionFactory()); // Set some timeout options to make debugging easier. - connector.setMaxIdleTime(1000 * 60 * 60); + connector.setIdleTimeout(1000 * 60 * 60); connector.setSoLingerTime(-1); connector.setPort(8983); server.setConnectors(new Connector[] { connector }); diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/JettyWebappTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/JettyWebappTest.java index 36750d14a69..4fb6230ba93 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/JettyWebappTest.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/JettyWebappTest.java @@ -28,8 +28,9 @@ import org.apache.solr.SolrJettyTestBase; import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.util.ExternalPaths; import org.eclipse.jetty.server.Connector; +import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.bio.SocketConnector; +import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.session.HashSessionIdManager; import org.eclipse.jetty.webapp.WebAppContext; import org.junit.Rule; @@ -71,8 +72,8 @@ public class JettyWebappTest extends SolrTestCaseJ4 server.setSessionIdManager(new HashSessionIdManager(new Random(random().nextLong()))); new WebAppContext(server, path, context ); - SocketConnector connector = new SocketConnector(); - connector.setMaxIdleTime(1000 * 60 * 60); + ServerConnector connector = new ServerConnector(server, new HttpConnectionFactory()); + connector.setIdleTimeout(1000 * 60 * 60); connector.setSoLingerTime(-1); connector.setPort(0); server.setConnectors(new Connector[]{connector});