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,

Reply via email to