This is an automated email from the ASF dual-hosted git repository.

dsmiley pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new b9d140f4b31 SOLR-17742: remove handleSelect requestDispatcher option 
(#3409)
b9d140f4b31 is described below

commit b9d140f4b31374d024ad58596387e249ecec2206
Author: wildtusker <[email protected]>
AuthorDate: Wed Aug 20 06:57:14 2025 +0530

    SOLR-17742: remove handleSelect requestDispatcher option (#3409)
    
    Was deprecated.
    ---------
    
    Co-authored-by: David Smiley <[email protected]>
---
 solr/CHANGES.txt                                   |  2 ++
 .../src/java/org/apache/solr/core/SolrConfig.java  |  9 ---------
 .../java/org/apache/solr/servlet/HttpSolrCall.java | 21 ---------------------
 .../apache/solr/servlet/SolrRequestParsers.java    | 15 +++------------
 .../resources/EditableSolrConfigAttributes.json    |  6 +++---
 .../org/apache/solr/core/TestConfigOverlay.java    |  2 --
 .../apache/solr/request/TestRemoteStreaming.java   |  1 -
 .../configuration-guide/pages/config-api.adoc      |  1 -
 .../pages/requestdispatcher.adoc                   | 22 ----------------------
 9 files changed, 8 insertions(+), 71 deletions(-)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 73dd813599c..6e88eedd506 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -145,6 +145,8 @@ Deprecation Removals
 
 * SOLR-17851: Removed BlobHandler and .system collection support (Eric Pugh)
 
+* SOLR-17742: Removed the handleSelect option of <requestDispatcher>.  (Gaurav 
Tuli, David Smiley)
+
 Dependency Upgrades
 ---------------------
 
diff --git a/solr/core/src/java/org/apache/solr/core/SolrConfig.java 
b/solr/core/src/java/org/apache/solr/core/SolrConfig.java
index 757503c4788..c9482838d4a 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrConfig.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrConfig.java
@@ -127,8 +127,6 @@ public class SolrConfig implements MapSerializable {
 
   private int formUploadLimitKB;
 
-  private boolean handleSelect;
-
   private final SolrRequestParsers solrRequestParsers;
 
   /**
@@ -362,8 +360,6 @@ public class SolrConfig implements MapSerializable {
         log.warn("Ignored deprecated enableStreamBody in config; use 
sys-prop");
       }
 
-      handleSelect = get("requestDispatcher").boolAttr("handleSelect", false);
-
       List<PluginInfo> argsInfos = getPluginInfos(InitParams.class.getName());
       if (argsInfos != null) {
         Map<String, InitParams> argsMap = new HashMap<>();
@@ -958,10 +954,6 @@ public class SolrConfig implements MapSerializable {
     return formUploadLimitKB;
   }
 
-  public boolean isHandleSelect() {
-    return handleSelect;
-  }
-
   @Override
   public Map<String, Object> toMap(Map<String, Object> result) {
     if (znodeVersion > -1) result.put(ZNODEVER, znodeVersion);
@@ -1009,7 +1001,6 @@ public class SolrConfig implements MapSerializable {
         m, filterCacheConfig, queryResultCacheConfig, documentCacheConfig, 
fieldValueCacheConfig);
     m = new LinkedHashMap<>();
     result.put("requestDispatcher", m);
-    m.put("handleSelect", handleSelect);
     if (httpCachingConfig != null) m.put("httpCaching", httpCachingConfig);
     m.put(
         "requestParsers",
diff --git a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java 
b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
index 7be425273a6..8107e36a4cd 100644
--- a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
+++ b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
@@ -99,7 +99,6 @@ import org.apache.solr.common.util.ValidatingJsonMap;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrConfig;
 import org.apache.solr.core.SolrCore;
-import org.apache.solr.handler.ContentStreamHandlerBase;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequestBase;
 import org.apache.solr.request.SolrRequestHandler;
@@ -401,26 +400,6 @@ public class HttpSolrCall {
   protected void extractHandlerFromURLPath(SolrRequestParsers parser) throws 
Exception {
     if (handler == null && path.length() > 1) { // don't match "" or "/" as 
valid path
       handler = core.getRequestHandler(path);
-      // no handler yet but <requestDispatcher> allows us to handle /select 
with a 'qt' param
-      if (handler == null && parser.isHandleSelect()) {
-        if ("/select".equals(path) || "/select/".equals(path)) {
-          solrReq = parser.parse(core, path, req);
-          String qt = solrReq.getParams().get(CommonParams.QT);
-          handler = core.getRequestHandler(qt);
-          if (handler == null) {
-            throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, 
"unknown handler: " + qt);
-          }
-          if (qt != null && qt.startsWith("/") && (handler instanceof 
ContentStreamHandlerBase)) {
-            // For security reasons it's a bad idea to allow a leading '/', 
ex: /select?qt=/update
-            // see SOLR-3161
-            // There was no restriction from Solr 1.4 thru 3.5 and it's not 
supported for update
-            // handlers.
-            throw new SolrException(
-                SolrException.ErrorCode.BAD_REQUEST,
-                "Invalid Request Handler ('qt').  Do not use /select to 
access: " + qt);
-          }
-        }
-      }
     }
   }
 
diff --git a/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java 
b/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
index 65c5f370cd5..aeccc342059 100644
--- a/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
+++ b/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
@@ -87,7 +87,6 @@ public class SolrRequestParsers {
   private final boolean enableRemoteStreams;
   private final boolean enableStreamBody;
   private StandardRequestParser standard;
-  private boolean handleSelect = true;
 
   /**
    * Default instance for e.g. admin requests. Limits to 2 MB uploads and does 
not allow remote
@@ -104,7 +103,7 @@ public class SolrRequestParsers {
       multipartUploadLimitKB = formUploadLimitKB = Integer.MAX_VALUE;
       enableRemoteStreams = false;
       enableStreamBody = false;
-      handleSelect = false;
+
     } else {
       multipartUploadLimitKB = globalConfig.getMultipartUploadLimitKB();
 
@@ -115,7 +114,7 @@ public class SolrRequestParsers {
       enableStreamBody = Boolean.getBoolean("solr.enableStreamBody");
 
       // Let this filter take care of /select?xxx format
-      handleSelect = globalConfig.isHandleSelect();
+
     }
     init(multipartUploadLimitKB, formUploadLimitKB);
   }
@@ -123,7 +122,7 @@ public class SolrRequestParsers {
   private SolrRequestParsers() {
     enableRemoteStreams = false;
     enableStreamBody = false;
-    handleSelect = false;
+
     init(Integer.MAX_VALUE, Integer.MAX_VALUE);
   }
 
@@ -516,14 +515,6 @@ public class SolrRequestParsers {
         "URLDecoder: Invalid digit (" + ((char) b) + ") in escape (%) 
pattern");
   }
 
-  public boolean isHandleSelect() {
-    return handleSelect;
-  }
-
-  public void setHandleSelect(boolean handleSelect) {
-    this.handleSelect = handleSelect;
-  }
-
   public boolean isEnableRemoteStreams() {
     return enableRemoteStreams;
   }
diff --git a/solr/core/src/resources/EditableSolrConfigAttributes.json 
b/solr/core/src/resources/EditableSolrConfigAttributes.json
index 0d65f2e3853..f72269e6283 100644
--- a/solr/core/src/resources/EditableSolrConfigAttributes.json
+++ b/solr/core/src/resources/EditableSolrConfigAttributes.json
@@ -56,8 +56,8 @@
     "boolTofilterOptimizer":1,
     "maxBooleanClauses":1},
   "requestDispatcher":{
-    "handleSelect":0,
-    "requestParsers":{
+     "requestParsers":{
       "multipartUploadLimitInKB":0,
-      "formdataUploadLimitInKB":0}}
+      "formdataUploadLimitInKB":0}
+  }
 }
diff --git a/solr/core/src/test/org/apache/solr/core/TestConfigOverlay.java 
b/solr/core/src/test/org/apache/solr/core/TestConfigOverlay.java
index c9da5383fd9..c12b6916e44 100644
--- a/solr/core/src/test/org/apache/solr/core/TestConfigOverlay.java
+++ b/solr/core/src/test/org/apache/solr/core/TestConfigOverlay.java
@@ -49,8 +49,6 @@ public class TestConfigOverlay extends SolrTestCase {
     assertTrue(
         
isEditableProp("requestDispatcher.requestParsers.formdataUploadLimitInKB", 
false, null));
 
-    assertTrue(isEditableProp("requestDispatcher.handleSelect", false, null));
-
     assertTrue(isEditableProp("query.filterCache.initialSize", false, null));
     assertFalse(isEditableProp("query.filterCache", false, null));
     assertTrue(isEditableProp("query/filterCache/@initialSize", true, null));
diff --git 
a/solr/core/src/test/org/apache/solr/request/TestRemoteStreaming.java 
b/solr/core/src/test/org/apache/solr/request/TestRemoteStreaming.java
index c1350ae970b..df7feaa7b2c 100644
--- a/solr/core/src/test/org/apache/solr/request/TestRemoteStreaming.java
+++ b/solr/core/src/test/org/apache/solr/request/TestRemoteStreaming.java
@@ -46,7 +46,6 @@ public class TestRemoteStreaming extends SolrJettyTestBase {
   public static void beforeTest() throws Exception {
     System.setProperty("solr.enableRemoteStreaming", "true");
     System.setProperty("solr.enableStreamBody", "true");
-    // this one has handleSelect=true which a test here needs
     Path solrHomeDirectory = 
createTempDir(LuceneTestCase.getTestClass().getSimpleName());
     setupJettyTestHome(solrHomeDirectory, "collection1");
     createAndStartJetty(solrHomeDirectory.toAbsolutePath());
diff --git 
a/solr/solr-ref-guide/modules/configuration-guide/pages/config-api.adoc 
b/solr/solr-ref-guide/modules/configuration-guide/pages/config-api.adoc
index 6bf03f30d47..57799adab95 100644
--- a/solr/solr-ref-guide/modules/configuration-guide/pages/config-api.adoc
+++ b/solr/solr-ref-guide/modules/configuration-guide/pages/config-api.adoc
@@ -219,7 +219,6 @@ See xref:deployment-guide:circuit-breakers.adoc[] for more 
details
 
 See xref:requestdispatcher.adoc[] for defaults and acceptable values for these 
settings.
 
-* `requestDispatcher.handleSelect`
 * `requestDispatcher.requestParsers.multipartUploadLimitInKB`
 * `requestDispatcher.requestParsers.formdataUploadLimitInKB`
 
diff --git 
a/solr/solr-ref-guide/modules/configuration-guide/pages/requestdispatcher.adoc 
b/solr/solr-ref-guide/modules/configuration-guide/pages/requestdispatcher.adoc
index 70cdc8fad97..110a58d61e6 100644
--- 
a/solr/solr-ref-guide/modules/configuration-guide/pages/requestdispatcher.adoc
+++ 
b/solr/solr-ref-guide/modules/configuration-guide/pages/requestdispatcher.adoc
@@ -20,28 +20,6 @@ The `requestDispatcher` element of `solrconfig.xml` controls 
the way the Solr HT
 
 Included are parameters for defining if it should handle `/select` urls (for 
Solr 1.1 compatibility), if it will support remote streaming, the maximum size 
of file uploads and how it will respond to HTTP cache headers in requests.
 
-== handleSelect Element
-
-[IMPORTANT]
-====
-`handleSelect` is for legacy back-compatibility; those new to Solr do not need 
to change anything about the way this is configured by default.
-====
-
-The first configurable item is the `handleSelect` attribute on the 
`<requestDispatcher>` element itself.
-This attribute can be set to one of two values, either "true" or "false".
-It governs how Solr responds to requests such as `/select?qt=XXX`.
-The default value "false" will ignore requests to `/select` if a request 
handler is not explicitly registered with the name `/select`.
-A value of "true" will route query requests to the parser defined with the 
`qt` value if a request handler is not explicitly registered with the name 
`/select`.
-
-In recent versions of Solr, a `/select` request handler is defined by default, 
so a value of "false" will work fine.
-See the section xref:requesthandlers-searchcomponents.adoc[] for more 
information.
-
-[source,xml]
-----
-<requestDispatcher handleSelect="true" >
-  ...
-</requestDispatcher>
-----
 
 == requestParsers Element
 

Reply via email to