You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by an...@apache.org on 2015/09/16 20:16:59 UTC
svn commit: r1703441 - in /lucene/dev/trunk/solr: ./
core/src/java/org/apache/solr/client/solrj/embedded/
core/src/java/org/apache/solr/servlet/ core/src/test/org/apache/solr/cloud/
webapp/web/WEB-INF/
Author: anshum
Date: Wed Sep 16 18:16:58 2015
New Revision: 1703441
URL: http://svn.apache.org/r1703441
Log:
SOLR-8058: Fix the exclusion filter so that collections that start with js, css, img, tpl can be accessed.
Added:
lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/TestExclusionRuleCollectionAccess.java (with props)
Modified:
lucene/dev/trunk/solr/CHANGES.txt
lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
lucene/dev/trunk/solr/webapp/web/WEB-INF/web.xml
Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1703441&r1=1703440&r2=1703441&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Wed Sep 16 18:16:58 2015
@@ -205,6 +205,8 @@ Bug Fixes
when parallelUpdates is enabled (default) and multiple docs are sent as a single update.
(kevin, hossman, shalin)
+* SOLR-8058: Fix the exclusion filter so that collections that start with js, css, img, tpl
+ can be accessed. (Upayavira, Steve Rowe, Anshum Gupta)
Optimizations
----------------------
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java?rev=1703441&r1=1703440&r2=1703441&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java Wed Sep 16 18:16:58 2015
@@ -28,6 +28,7 @@ import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.SslConnectionFactory;
import org.eclipse.jetty.server.session.HashSessionIdManager;
+import org.eclipse.jetty.servlet.BaseHolder;
import org.eclipse.jetty.servlet.FilterHolder;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
@@ -85,6 +86,8 @@ public class JettySolrRunner {
private volatile boolean startedBefore = false;
private LinkedList<FilterHolder> extraFilters;
+
+ private static final String excludePatterns = "/css/.+,/js/.+,/img/.+,/tpl/.+";
private int proxyPort = -1;
@@ -333,9 +336,10 @@ public class JettySolrRunner {
String pathSpec = config.extraServlets.get(servletHolder);
root.addServlet(servletHolder, pathSpec);
}
-
- dispatchFilter = root.addFilter(SolrDispatchFilter.class, "*", EnumSet.of(DispatcherType.REQUEST) );
-
+ dispatchFilter = root.getServletHandler().newFilterHolder(BaseHolder.Source.EMBEDDED);
+ dispatchFilter.setHeldClass(SolrDispatchFilter.class);
+ dispatchFilter.setInitParameter("excludePatterns", excludePatterns);
+ root.addFilter(dispatchFilter, "*", EnumSet.of(DispatcherType.REQUEST));
}
@Override
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java?rev=1703441&r1=1703440&r2=1703441&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java Wed Sep 16 18:16:58 2015
@@ -195,9 +195,13 @@ public class SolrDispatchFilter extends
// No need to even create the HttpSolrCall object if this path is excluded.
if(excludePatterns != null) {
- String servletPath = ((HttpServletRequest) request).getServletPath();
+ String requestPath = ((HttpServletRequest) request).getServletPath();
+ String extraPath = ((HttpServletRequest)request).getPathInfo();
+ if (extraPath != null) { // In embedded mode, servlet path is empty - include all post-context path here for testing
+ requestPath += extraPath;
+ }
for (Pattern p : excludePatterns) {
- Matcher matcher = p.matcher(servletPath);
+ Matcher matcher = p.matcher(requestPath);
if (matcher.lookingAt()) {
chain.doFilter(request, response);
return;
Added: lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/TestExclusionRuleCollectionAccess.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/TestExclusionRuleCollectionAccess.java?rev=1703441&view=auto
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/TestExclusionRuleCollectionAccess.java (added)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/TestExclusionRuleCollectionAccess.java Wed Sep 16 18:16:58 2015
@@ -0,0 +1,50 @@
+package org.apache.solr.cloud;
+
+/*
+ * 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.
+ */
+
+import org.apache.lucene.util.LuceneTestCase;
+import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.request.CollectionAdminRequest;
+import org.junit.Test;
+
+@LuceneTestCase.Slow
+public class TestExclusionRuleCollectionAccess extends AbstractFullDistribZkTestBase {
+
+ public TestExclusionRuleCollectionAccess() {
+ schemaString = "schema15.xml"; // we need a string id
+ sliceCount = 1;
+ }
+
+ @Test
+ public void doTest() throws Exception {
+ CollectionAdminRequest.Create req = new CollectionAdminRequest.Create();
+ req.setCollectionName("css33");
+ req.setNumShards(1);
+ req.process(cloudClient);
+
+ waitForRecoveriesToFinish("css33", false);
+
+ try (SolrClient c = createCloudClient("css33")) {
+ c.add(getDoc("id", "1"));
+ c.commit();
+
+ assertEquals("Should have returned 1 result", 1, c.query(params("q", "*:*", "collection", "css33")).getResults().getNumFound());
+ }
+ }
+
+}
Modified: lucene/dev/trunk/solr/webapp/web/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/webapp/web/WEB-INF/web.xml?rev=1703441&r1=1703440&r2=1703441&view=diff
==============================================================================
--- lucene/dev/trunk/solr/webapp/web/WEB-INF/web.xml (original)
+++ lucene/dev/trunk/solr/webapp/web/WEB-INF/web.xml Wed Sep 16 18:16:58 2015
@@ -56,7 +56,7 @@
-->
<init-param>
<param-name>excludePatterns</param-name>
- <param-value>/css/*,/js/*,/img/*,/tpl/*</param-value>
+ <param-value>/css/.+,/js/.+,/img/.+,/tpl/.+</param-value>
</init-param>
</filter>