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 --------------------- 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..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,10 +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); @@ -1010,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 4b77790898c..0c9d29a8f67 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; @@ -453,26 +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 - 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..2556e422501 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 SolrRequestParsers(SolrConfig globalConfig) { multipartUploadLimitKB = formUploadLimitKB = Integer.MAX_VALUE; enableRemoteStreams = false; enableStreamBody = false; - handleSelect = false; + } else { multipartUploadLimitKB = globalConfig.getMultipartUploadLimitKB(); @@ -115,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); } @@ -123,7 +122,7 @@ public SolrRequestParsers(SolrConfig globalConfig) { private SolrRequestParsers() { enableRemoteStreams = false; enableStreamBody = false; - handleSelect = false; + init(Integer.MAX_VALUE, Integer.MAX_VALUE); } @@ -516,14 +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; }