This is an automated email from the ASF dual-hosted git repository. cpoerschke pushed a commit to branch jira/solr-13350 in repository https://gitbox.apache.org/repos/asf/solr.git
commit 07f01620a976f357a652deee833f975c49defcb7 Author: Christine Poerschke <[email protected]> AuthorDate: Tue Apr 23 18:12:38 2024 +0100 add multiThreaded parameter in QueryCommand --- .../org/apache/solr/handler/component/QueryComponent.java | 3 +++ .../java/org/apache/solr/search/MultiThreadedSearcher.java | 14 ++++---------- .../core/src/java/org/apache/solr/search/QueryCommand.java | 10 ++++++++++ .../test/org/apache/solr/search/TestCpuAllowedLimit.java | 4 ++-- .../src/test/org/apache/solr/search/TestQueryLimits.java | 2 +- 5 files changed, 20 insertions(+), 13 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java b/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java index 4f17cb7652b..1c7f1db8f80 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java +++ b/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java @@ -372,10 +372,13 @@ public class QueryComponent extends SearchComponent { return; } + final boolean multiThreaded = params.getBool("multiThreaded", false); + // -1 as flag if not set. long timeAllowed = params.getLong(CommonParams.TIME_ALLOWED, -1L); QueryCommand cmd = rb.createQueryCommand(); + cmd.setMultiThreaded(multiThreaded); cmd.setTimeAllowed(timeAllowed); cmd.setMinExactCount(getMinExactCount(params)); cmd.setDistribStatsDisabled(rb.isDistribStatsDisabled()); diff --git a/solr/core/src/java/org/apache/solr/search/MultiThreadedSearcher.java b/solr/core/src/java/org/apache/solr/search/MultiThreadedSearcher.java index d1c21a43a42..f9810b1a083 100644 --- a/solr/core/src/java/org/apache/solr/search/MultiThreadedSearcher.java +++ b/solr/core/src/java/org/apache/solr/search/MultiThreadedSearcher.java @@ -39,7 +39,6 @@ import org.apache.lucene.search.TopDocsCollector; import org.apache.lucene.search.TopFieldDocs; import org.apache.lucene.util.FixedBitSet; import org.apache.lucene.util.automaton.ByteRunAutomaton; -import org.apache.solr.request.SolrRequestInfo; import org.apache.solr.search.join.GraphQuery; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -121,15 +120,10 @@ public class MultiThreadedSearcher { } static boolean allowMT(DelegatingCollector postFilter, QueryCommand cmd, Query query) { - if (SolrRequestInfo.getRequestInfo() != null - && SolrRequestInfo.getRequestInfo().getReq() != null) { - boolean multithreaded = - SolrRequestInfo.getRequestInfo().getReq().getParams().getBool("multithreaded", true); - if (!multithreaded) { - return false; - } - } - if (postFilter != null || cmd.getSegmentTerminateEarly() || cmd.getTimeAllowed() > 0) { + if (postFilter != null + || cmd.getSegmentTerminateEarly() + || cmd.getTimeAllowed() > 0 + || !cmd.getMultiThreaded()) { return false; } else { MTCollectorQueryCheck allowMT = new MTCollectorQueryCheck(); diff --git a/solr/core/src/java/org/apache/solr/search/QueryCommand.java b/solr/core/src/java/org/apache/solr/search/QueryCommand.java index 7ed6b6b9473..0622bb76567 100755 --- a/solr/core/src/java/org/apache/solr/search/QueryCommand.java +++ b/solr/core/src/java/org/apache/solr/search/QueryCommand.java @@ -36,6 +36,7 @@ public class QueryCommand { private int len; private int supersetMaxDoc; private int flags; + private boolean multiThreaded = false; private long timeAllowed = -1; private int minExactCount = Integer.MAX_VALUE; private CursorMark cursorMark; @@ -152,6 +153,15 @@ public class QueryCommand { return this; } + public boolean getMultiThreaded() { + return multiThreaded; + } + + public QueryCommand setMultiThreaded(boolean multiThreaded) { + this.multiThreaded = multiThreaded; + return this; + } + public long getTimeAllowed() { return timeAllowed; } diff --git a/solr/core/src/test/org/apache/solr/search/TestCpuAllowedLimit.java b/solr/core/src/test/org/apache/solr/search/TestCpuAllowedLimit.java index 126a71eb044..ea02e448da8 100644 --- a/solr/core/src/test/org/apache/solr/search/TestCpuAllowedLimit.java +++ b/solr/core/src/test/org/apache/solr/search/TestCpuAllowedLimit.java @@ -186,7 +186,7 @@ public class TestCpuAllowedLimit extends SolrCloudTestCase { "prepare,process", "cpuAllowed", "50", - "multithreaded", + "multiThreaded", "false")); // System.err.println("rsp=" + rsp.jsonStr()); assertNotNull("should have partial results", rsp.getHeader().get("partialResults")); @@ -207,7 +207,7 @@ public class TestCpuAllowedLimit extends SolrCloudTestCase { "prepare,process", "cpuAllowed", "50", - "multithreaded", + "multiThreaded", "false")); // System.err.println("rsp=" + rsp.jsonStr()); assertNotNull("should have partial results", rsp.getHeader().get("partialResults")); diff --git a/solr/core/src/test/org/apache/solr/search/TestQueryLimits.java b/solr/core/src/test/org/apache/solr/search/TestQueryLimits.java index 2d490363f89..ae1b0a32d6c 100644 --- a/solr/core/src/test/org/apache/solr/search/TestQueryLimits.java +++ b/solr/core/src/test/org/apache/solr/search/TestQueryLimits.java @@ -85,7 +85,7 @@ public class TestQueryLimits extends SolrCloudTestCase { "true", "facet.field", "val_i", - "multithreaded", + "multiThreaded", "false")); assertNotNull( "should have partial results for expr " + matchingExpr,
