From 9d0ff60773b0e7a39bd0d65d767417061b7affdd Mon Sep 17 00:00:00 2001 From: Gaurav Tuli Date: Fri, 27 Jun 2025 23:58:33 +0530 Subject: [PATCH 1/4] -Removed handleSelect from SolrConfig.java ,SolrRequestParsers.java and HttpSolrCall.java --- .../java/org/apache/solr/core/SolrConfig.java | 11 +++---- .../org/apache/solr/servlet/HttpSolrCall.java | 32 +++++++------------ .../solr/servlet/SolrRequestParsers.java | 22 ++++++------- 3 files changed, 26 insertions(+), 39 deletions(-) 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 4d7962a5ea5..af3f14911bb 100644 --- a/solr/core/src/java/org/apache/solr/core/SolrConfig.java +++ b/solr/core/src/java/org/apache/solr/core/SolrConfig.java @@ -128,7 +128,7 @@ public enum PluginOpts { private int formUploadLimitKB; - private boolean handleSelect; + // private boolean handleSelect; private final SolrRequestParsers solrRequestParsers; @@ -363,7 +363,7 @@ private SolrConfig(SolrResourceLoader loader, String name, Properties substituta log.warn("Ignored deprecated enableStreamBody in config; use sys-prop"); } - handleSelect = get("requestDispatcher").boolAttr("handleSelect", false); + // handleSelect = get("requestDispatcher").boolAttr("handleSelect", false); List argsInfos = getPluginInfos(InitParams.class.getName()); if (argsInfos != null) { @@ -959,10 +959,7 @@ public int getFormUploadLimitKB() { return formUploadLimitKB; } - public boolean isHandleSelect() { - return handleSelect; - } - + /** public boolean isHandleSelect() { return handleSelect; } */ @Override public Map toMap(Map result) { if (znodeVersion > -1) result.put(ZNODEVER, znodeVersion); @@ -1010,7 +1007,7 @@ public Map toMap(Map result) { m, filterCacheConfig, queryResultCacheConfig, documentCacheConfig, fieldValueCacheConfig); m = new LinkedHashMap<>(); result.put("requestDispatcher", m); - m.put("handleSelect", handleSelect); + // 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 fee0c3d0c21..f0e84854e42 100644 --- a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java +++ b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java @@ -104,7 +104,6 @@ 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.LocalSolrQueryRequest; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.request.SolrQueryRequestBase; @@ -454,25 +453,18 @@ protected void extractHandlerFromURLPath(SolrRequestParsers parser) throws Excep if (handler == null && path.length() > 1) { // don't match "" or "/" as valid path handler = core.getRequestHandler(path); // no handler yet but 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); - } - } - } + /** + * 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 9c32b96135b..6270659e1f1 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,8 @@ public class SolrRequestParsers { private final boolean enableRemoteStreams; private final boolean enableStreamBody; private StandardRequestParser standard; - private boolean handleSelect = true; + + // private boolean handleSelect = true; /** * Default instance for e.g. admin requests. Limits to 2 MB uploads and does not allow remote @@ -104,7 +105,7 @@ public SolrRequestParsers(SolrConfig globalConfig) { multipartUploadLimitKB = formUploadLimitKB = Integer.MAX_VALUE; enableRemoteStreams = false; enableStreamBody = false; - handleSelect = false; + // handleSelect = false; } else { multipartUploadLimitKB = globalConfig.getMultipartUploadLimitKB(); @@ -115,7 +116,7 @@ public SolrRequestParsers(SolrConfig globalConfig) { enableStreamBody = Boolean.getBoolean("solr.enableStreamBody"); // Let this filter take care of /select?xxx format - handleSelect = globalConfig.isHandleSelect(); + // handleSelect = globalConfig.isHandleSelect(); } init(multipartUploadLimitKB, formUploadLimitKB); } @@ -123,7 +124,7 @@ public SolrRequestParsers(SolrConfig globalConfig) { private SolrRequestParsers() { enableRemoteStreams = false; enableStreamBody = false; - handleSelect = false; + // handleSelect = false; init(Integer.MAX_VALUE, Integer.MAX_VALUE); } @@ -516,14 +517,11 @@ private static int digit16(int b) { "URLDecoder: Invalid digit (" + ((char) b) + ") in escape (%) pattern"); } - public boolean isHandleSelect() { - return handleSelect; - } - - public void setHandleSelect(boolean handleSelect) { - this.handleSelect = handleSelect; - } - + /** + * public boolean isHandleSelect() { return handleSelect; } + * + *

public void setHandleSelect(boolean handleSelect) { this.handleSelect = handleSelect; } + */ public boolean isEnableRemoteStreams() { return enableRemoteStreams; } From 22a24edbceec4a4a4fffca6661fef23a8d913336 Mon Sep 17 00:00:00 2001 From: Gaurav Tuli Date: Sun, 29 Jun 2025 13:39:41 +0530 Subject: [PATCH 2/4] SOLR-17742 : Remove comments --- .../src/java/org/apache/solr/core/SolrConfig.java | 6 ------ .../java/org/apache/solr/servlet/HttpSolrCall.java | 13 +------------ .../org/apache/solr/servlet/SolrRequestParsers.java | 13 +++---------- 3 files changed, 4 insertions(+), 28 deletions(-) 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 af3f14911bb..b3e19e4b7cf 100644 --- a/solr/core/src/java/org/apache/solr/core/SolrConfig.java +++ b/solr/core/src/java/org/apache/solr/core/SolrConfig.java @@ -128,8 +128,6 @@ public enum PluginOpts { private int formUploadLimitKB; - // private boolean handleSelect; - private final SolrRequestParsers solrRequestParsers; /** @@ -363,8 +361,6 @@ private SolrConfig(SolrResourceLoader loader, String name, Properties substituta log.warn("Ignored deprecated enableStreamBody in config; use sys-prop"); } - // handleSelect = get("requestDispatcher").boolAttr("handleSelect", false); - List argsInfos = getPluginInfos(InitParams.class.getName()); if (argsInfos != null) { Map argsMap = new HashMap<>(); @@ -959,7 +955,6 @@ public int getFormUploadLimitKB() { return formUploadLimitKB; } - /** public boolean isHandleSelect() { return handleSelect; } */ @Override public Map toMap(Map result) { if (znodeVersion > -1) result.put(ZNODEVER, znodeVersion); @@ -1007,7 +1002,6 @@ public Map toMap(Map result) { 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 f0e84854e42..d2923ba25a5 100644 --- a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java +++ b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java @@ -453,18 +453,7 @@ protected void extractHandlerFromURLPath(SolrRequestParsers parser) throws Excep if (handler == null && path.length() > 1) { // don't match "" or "/" as valid path handler = core.getRequestHandler(path); // no handler yet but 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 6270659e1f1..2556e422501 100644 --- a/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java +++ b/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java @@ -88,8 +88,6 @@ public class SolrRequestParsers { 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 * streams. @@ -105,7 +103,7 @@ public SolrRequestParsers(SolrConfig globalConfig) { multipartUploadLimitKB = formUploadLimitKB = Integer.MAX_VALUE; enableRemoteStreams = false; enableStreamBody = false; - // handleSelect = false; + } else { multipartUploadLimitKB = globalConfig.getMultipartUploadLimitKB(); @@ -116,7 +114,7 @@ public SolrRequestParsers(SolrConfig globalConfig) { enableStreamBody = Boolean.getBoolean("solr.enableStreamBody"); // Let this filter take care of /select?xxx format - // handleSelect = globalConfig.isHandleSelect(); + } init(multipartUploadLimitKB, formUploadLimitKB); } @@ -124,7 +122,7 @@ public SolrRequestParsers(SolrConfig globalConfig) { private SolrRequestParsers() { enableRemoteStreams = false; enableStreamBody = false; - // handleSelect = false; + init(Integer.MAX_VALUE, Integer.MAX_VALUE); } @@ -517,11 +515,6 @@ private static int digit16(int b) { "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; } From 2beb45cef28c40141f73396e380f3fced8e0260b Mon Sep 17 00:00:00 2001 From: Gaurav Tuli Date: Mon, 30 Jun 2025 23:23:38 +0530 Subject: [PATCH 3/4] SOLR-17742 : Remove comment from HttpSolrCall.java --- solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java | 2 -- 1 file changed, 2 deletions(-) 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 d2923ba25a5..3e66bfcef8e 100644 --- a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java +++ b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java @@ -452,8 +452,6 @@ protected List resolveCollectionListOrAlias(String collectionStr) { 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 allows us to handle /select with a 'qt' param - } } From b47a4bcfa0efc2880a4034cc84bdc4c711057db6 Mon Sep 17 00:00:00 2001 From: David Smiley Date: Mon, 30 Jun 2025 20:30:42 -0400 Subject: [PATCH 4/4] CHANGES.txt --- solr/CHANGES.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index cebce8dc85e..4acd020df5e 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -135,6 +135,8 @@ Deprecation Removals * SOLR-17778: Removed no-op core admin operation FORCEPREPAREFORLEADERSHIP and its SolrJ peer OverrideLastPublished. (Pierre Salagnac) +* SOLR-17742: Removed the handleSelect option of . (Gaurav Tuli) + Dependency Upgrades ---------------------