You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by cp...@apache.org on 2024/02/14 11:21:46 UTC
(solr) 02/02: factor out SolrIndexSearcher.allowMT(Query) utility; add SolrIndexSearcher.MTCollectorQueryCheck class-level javadocs;
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 c69006a4ca6625307e17fb0c272b08eebacd9a69
Author: Christine Poerschke <cp...@apache.org>
AuthorDate: Wed Feb 14 11:19:23 2024 +0000
factor out SolrIndexSearcher.allowMT(Query) utility; add SolrIndexSearcher.MTCollectorQueryCheck class-level javadocs;
---
.../org/apache/solr/search/SolrIndexSearcher.java | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
index e2c0eb36a97..d5d6a5193aa 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
@@ -1884,13 +1884,12 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
if (log.isInfoEnabled()) {
log.info("calling from 2, query: {}", query.getClass());
}
- MTCollectorQueryCheck allowMT = new MTCollectorQueryCheck();
- query.visit(allowMT);
+ final boolean allowMT = allowMT(query);
final TopDocs topDocs;
if (pf.postFilter != null
|| cmd.getSegmentTerminateEarly()
|| cmd.getTimeAllowed() > 0
- || !allowMT.allowed()) {
+ || !allowMT) {
if (log.isInfoEnabled()) {
log.info("skipping collector manager");
}
@@ -2234,13 +2233,12 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
// no docs on this page, so cursor doesn't change
qr.setNextCursorMark(cmd.getCursorMark());
} else {
- MTCollectorQueryCheck allowMT = new MTCollectorQueryCheck();
- query.visit(allowMT);
+ final boolean allowMT = allowMT(query);
TopDocs topDocs;
if (pf.postFilter != null
|| cmd.getSegmentTerminateEarly()
|| cmd.getTimeAllowed() > 0
- || !allowMT.allowed()) {
+ || !allowMT) {
@SuppressWarnings({"rawtypes"})
final TopDocsCollector<? extends ScoreDoc> topCollector = buildTopDocsCollector(len, cmd);
DocSetCollector setCollector = new DocSetCollector(maxDoc);
@@ -2925,6 +2923,16 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
return warmupTime;
}
+ private static boolean allowMT(Query query) {
+ MTCollectorQueryCheck allowMT = new MTCollectorQueryCheck();
+ query.visit(allowMT);
+ return allowMT.allowed();
+ }
+
+ /**
+ * A {@link QueryVisitor} that recurses through the query tree, determining if all queries support
+ * multi-threaded collecting.
+ */
private static class MTCollectorQueryCheck extends QueryVisitor {
private QueryVisitor subVisitor = this;