commit bc31c6cdfa21419d6d27b0211129fea37e998ad4 Author: gil puntogil@libero.it Date: Wed Jan 14 00:33:09 2015 +0100
Add jetty9 support
solr-4.10.3-SOLR-4839.patch | 185 +++++++++++++++++++++++++++++++++++++++++++ solr.spec | 45 +++-------- 2 files changed, 196 insertions(+), 34 deletions(-) --- diff --git a/solr-4.10.3-SOLR-4839.patch b/solr-4.10.3-SOLR-4839.patch new file mode 100644 index 0000000..6d6ead5 --- /dev/null +++ b/solr-4.10.3-SOLR-4839.patch @@ -0,0 +1,185 @@ +--- solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java 2014-08-07 07:21:33.000000000 +0200 ++++ solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java.SOLR-4839 2015-01-14 00:06:05.674178208 +0100 +@@ -42,16 +42,18 @@ import javax.servlet.http.HttpServletRes + import org.apache.solr.servlet.SolrDispatchFilter; + import org.eclipse.jetty.server.Connector; + 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.HttpConfiguration; ++import org.eclipse.jetty.server.HttpConnectionFactory; ++import org.eclipse.jetty.server.LowResourceMonitor; ++import org.eclipse.jetty.server.SecureRequestCustomizer; ++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; +@@ -203,17 +205,20 @@ 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); ++ ++ 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); ++ + 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 +@@ -228,52 +233,46 @@ 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); ++ ++ 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; + } else { +- throw new IllegalArgumentException("Illegal value for system property 'tests.jettyConnector': " + connectorName); ++ ServerConnector c = new ServerConnector(server, new HttpConnectionFactory()); ++ connector = c; + } + ++ connector.setReuseAddress(true); ++ connector.setSoLingerTime(0); ++ connector.setPort(port); ++ connector.setHost("127.0.0.1"); ++ + 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.SECONDS.toMillis(5)); +- 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); ++ ++ server.setConnectors(new Connector[] {connector}); + } + + // Initialize the servlets + final ServletContextHandler root = new ServletContextHandler(server,context,ServletContextHandler.SESSIONS); +- root.setHandler(new GzipHandler()); ++ root.addFilter(GzipFilter.class, "*", EnumSet.of(DispatcherType.REQUEST)); + server.addLifeCycleListener(new LifeCycle.Listener() { + + @Override +@@ -340,7 +339,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()) { +@@ -360,7 +359,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")) { +@@ -465,7 +464,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(); + } + + /** +@@ -500,12 +499,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) { +@@ -615,6 +614,10 @@ class NoLog implements Logger { + + } + ++ public void debug(String s, long l) { ++ ++ } ++ + @Override + public String getName() { + return toString(); diff --git a/solr.spec b/solr.spec index 71cefe6..151f5bb 100644 --- a/solr.spec +++ b/solr.spec @@ -6,8 +6,6 @@ %bcond_with uima %bcond_with webapp
-%bcond_with jetty8 - %bcond_with kite %endif Name: solr @@ -22,6 +20,8 @@ Source0: http://www.apache.org/dist/lucene/solr/%%7Bversion%7D/%%7Bname%7D-%%7Bversi # Use solr-get-poms.sh <VERSION> Source1: solr-poms-%{version}.tar.xz Source2: solr-get-poms.sh +# https://issues.apache.org/jira/browse/SOLR-4839 +Patch0: solr-4.10.3-SOLR-4839.patch
BuildRequires: mvn(com.cybozu.labs:langdetect) BuildRequires: mvn(com.google.guava:guava) @@ -56,26 +56,11 @@ BuildRequires: mvn(org.apache.velocity:velocity-tools) BuildRequires: mvn(org.apache.zookeeper:zookeeper) BuildRequires: mvn(org.carrot2:morfologik-polish) BuildRequires: mvn(org.codehaus.woodstox:woodstox-core-asl) - -%if %{without jetty8} BuildRequires: mvn(org.eclipse.jetty:jetty-server) BuildRequires: mvn(org.eclipse.jetty:jetty-servlet) +BuildRequires: mvn(org.eclipse.jetty:jetty-servlets) BuildRequires: mvn(org.eclipse.jetty:jetty-util) BuildRequires: mvn(org.eclipse.jetty:jetty-webapp) -%else -BuildRequires: mvn(org.eclipse.jetty:jetty-continuation:8.1.14.v20131031) -BuildRequires: mvn(org.eclipse.jetty:jetty-deploy:8.1.14.v20131031) -BuildRequires: mvn(org.eclipse.jetty:jetty-http:8.1.14.v20131031) -BuildRequires: mvn(org.eclipse.jetty:jetty-io:8.1.14.v20131031) -BuildRequires: mvn(org.eclipse.jetty:jetty-jmx:8.1.14.v20131031) -BuildRequires: mvn(org.eclipse.jetty:jetty-security:8.1.14.v20131031) -BuildRequires: mvn(org.eclipse.jetty:jetty-server:8.1.14.v20131031) -BuildRequires: mvn(org.eclipse.jetty:jetty-servlet:8.1.14.v20131031) -BuildRequires: mvn(org.eclipse.jetty:jetty-util:8.1.14.v20131031) -BuildRequires: mvn(org.eclipse.jetty:jetty-webapp:8.1.14.v20131031) -BuildRequires: mvn(org.eclipse.jetty:jetty-xml:8.1.14.v20131031) -Requires: jetty8 -%endif BuildRequires: mvn(org.noggit:noggit) BuildRequires: mvn(org.ow2.asm:asm) BuildRequires: mvn(org.ow2.asm:asm-commons) @@ -99,7 +84,7 @@ BuildRequires: mvn(io.netty:netty) # work in progress ... circular deps BuildRequires: mvn(org.carrot2:carrot2-mini:3.8.0) %endif -%if %{with randomizedtesting} +%if %{without randomizedtesting} # {lucene,solr}/test-framework BuildRequires: mvn(com.carrotsearch.randomizedtesting:randomizedtesting-runner) BuildRequires: mvn(junit:junit) @@ -302,8 +287,7 @@ done %if %{without carrot2} %pom_disable_module clustering solr/contrib %endif -%if %{without randomizedtesting} -%pom_disable_module test-framework lucene +%if %{with randomizedtesting} %pom_disable_module test-framework solr %endif %if %{with uima} @@ -360,19 +344,12 @@ done %pom_disable_module lucene rm -r lucene
- -%if %{without jetty8} -# Disable Jetty8 support -%pom_remove_dep org.eclipse.jetty: solr/core -rm -r solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java -%else -# Add jetty compat version RHBZ#1057670 -%pom_xpath_set "pom:properties/pom:jetty.version" 8.1.14.v20131031 -for m in solr/core solr/test-framework; do -%pom_xpath_inject "pom:dependencies/pom:dependency[pom:groupId = 'org.eclipse.jetty']" \ - '<version>${jetty.version}</version>' ${m} -done -%endif +# Add jetty9 support +%patch0 -p0 +%pom_xpath_set "pom:properties/pom:jetty.version" 9.0.5.v20130815 +%pom_add_dep org.eclipse.jetty:jetty-servlets solr/core +%pom_remove_dep org.eclipse.jetty.orbit:javax.servlet solr/core +%pom_add_dep javax.servlet:javax.servlet-api solr/core
# fix log4j version sed -i "s|<version>1.2.16</version>|<version>1.2.17</version>|" pom.xml