You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mu...@apache.org on 2020/09/24 16:42:40 UTC
[lucene-solr] branch master updated: SOLR-14036: Remove explicit
distrib=false from /terms handler (#1900)
This is an automated email from the ASF dual-hosted git repository.
munendrasn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/master by this push:
new ac58472 SOLR-14036: Remove explicit distrib=false from /terms handler (#1900)
ac58472 is described below
commit ac5847231017f12d6a51348e1cdbd50c9732a224
Author: S N Munendra <mu...@apache.org>
AuthorDate: Thu Sep 24 22:12:24 2020 +0530
SOLR-14036: Remove explicit distrib=false from /terms handler (#1900)
* Remove distrib=false from /terms handler so that terms are returned from across all shards instead of a single local shard.
* cleanup shards parameter handling in TermsComponent. This is handled in HttpShardHandler
* Remove redundant tests for shard whitelist
* remove redundant terms params from ScoreNodeStream
---
solr/CHANGES.txt | 2 +
.../solr/handler/component/TermsComponent.java | 46 ----
solr/core/src/resources/ImplicitPlugins.json | 3 +-
.../component/CustomTermsComponentTest.java | 257 ---------------------
.../component/DistributedTermsComponentTest.java | 32 +--
.../src/major-changes-in-solr-9.adoc | 2 +
solr/solr-ref-guide/src/the-terms-component.adoc | 1 -
.../client/solrj/io/stream/ScoreNodesStream.java | 4 -
8 files changed, 21 insertions(+), 326 deletions(-)
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index a909850..3931744 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -124,6 +124,8 @@ Other Changes
* SOLR-9607: Remove /terms configuration from solrconfig.xml, as implicit definition is up-to-par now (Alexandre Rafalovitch)
+* SOLR-14036: Remove distrib=false from /terms handler's default parameters (David Smiley, Munendra S N)
+
Bug Fixes
---------------------
* SOLR-14546: Fix for a relatively hard to hit issue in OverseerTaskProcessor that could lead to out of order execution
diff --git a/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java b/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
index 4eddadc..6ab2dd2 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
@@ -20,7 +20,6 @@ import java.io.IOException;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
-import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -41,17 +40,13 @@ import org.apache.lucene.util.StringHelper;
import org.apache.lucene.util.mutable.MutableValue;
import org.apache.solr.client.solrj.response.TermsResponse;
import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
-import org.apache.solr.common.cloud.ClusterState;
import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.common.params.ShardParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.params.TermsParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.common.util.StrUtils;
import org.apache.solr.common.util.Utils;
-import org.apache.solr.handler.component.HttpShardHandlerFactory.WhitelistHostChecker;
import org.apache.solr.request.SimpleFacets.CountPair;
import org.apache.solr.schema.FieldType;
import org.apache.solr.schema.SchemaField;
@@ -83,18 +78,10 @@ public class TermsComponent extends SearchComponent {
public static final int UNLIMITED_MAX_COUNT = -1;
public static final String COMPONENT_NAME = "terms";
- // This needs to be created here too, because Solr doesn't call init(...) on default components. Bug?
- private WhitelistHostChecker whitelistHostChecker = new WhitelistHostChecker(
- null,
- !HttpShardHandlerFactory.doGetDisableShardsWhitelist());
-
@Override
public void init( @SuppressWarnings({"rawtypes"})NamedList args )
{
super.init(args);
- whitelistHostChecker = new WhitelistHostChecker(
- (String) args.get(HttpShardHandlerFactory.INIT_SHARDS_WHITELIST),
- !HttpShardHandlerFactory.doGetDisableShardsWhitelist());
}
@Override
@@ -104,39 +91,6 @@ public class TermsComponent extends SearchComponent {
//the terms parameter is also used by json facet API. So we will get errors if we try to parse as boolean
if (params.get(TermsParams.TERMS, "false").equals("true")) {
rb.doTerms = true;
- } else {
- return;
- }
-
- // TODO: temporary... this should go in a different component.
- String shards = params.get(ShardParams.SHARDS);
- if (shards != null) {
- rb.isDistrib = true;
- if (params.get(ShardParams.SHARDS_QT) == null) {
- throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "No shards.qt parameter specified");
- }
- List<String> lst = StrUtils.splitSmart(shards, ",", true);
- checkShardsWhitelist(rb, lst);
- rb.shards = lst.toArray(new String[lst.size()]);
- }
- }
-
- protected void checkShardsWhitelist(final ResponseBuilder rb, final List<String> lst) {
- final List<String> urls = new LinkedList<String>();
- for (final String ele : lst) {
- urls.addAll(StrUtils.splitSmart(ele, '|'));
- }
-
- if (whitelistHostChecker.isWhitelistHostCheckingEnabled() && rb.req.getCore().getCoreContainer().getZkController() == null && !whitelistHostChecker.hasExplicitWhitelist()) {
- throw new SolrException(ErrorCode.FORBIDDEN, "TermsComponent "+HttpShardHandlerFactory.INIT_SHARDS_WHITELIST
- +" not configured but required when using the '"+ShardParams.SHARDS+"' parameter with the TermsComponent."
- +HttpShardHandlerFactory.SET_SOLR_DISABLE_SHARDS_WHITELIST_CLUE);
- } else {
- ClusterState cs = null;
- if (rb.req.getCore().getCoreContainer().getZkController() != null) {
- cs = rb.req.getCore().getCoreContainer().getZkController().getClusterState();
- }
- whitelistHostChecker.checkWhitelist(cs, urls.toString(), urls);
}
}
diff --git a/solr/core/src/resources/ImplicitPlugins.json b/solr/core/src/resources/ImplicitPlugins.json
index 3e9d439..bb17c3b 100644
--- a/solr/core/src/resources/ImplicitPlugins.json
+++ b/solr/core/src/resources/ImplicitPlugins.json
@@ -133,8 +133,7 @@
"terms"
],
"defaults": {
- "terms": true,
- "distrib": false
+ "terms": true
}
},
"/analysis/document": {
diff --git a/solr/core/src/test/org/apache/solr/handler/component/CustomTermsComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/CustomTermsComponentTest.java
deleted file mode 100644
index 213e224..0000000
--- a/solr/core/src/test/org/apache/solr/handler/component/CustomTermsComponentTest.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.solr.handler.component;
-
-import static org.hamcrest.CoreMatchers.containsString;
-
-import java.io.IOException;
-import java.util.List;
-import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.request.QueryRequest;
-import org.apache.solr.client.solrj.request.UpdateRequest;
-import org.apache.solr.client.solrj.response.QueryResponse;
-import org.apache.solr.client.solrj.response.TermsResponse;
-import org.apache.solr.client.solrj.response.TermsResponse.Term;
-import org.apache.solr.cloud.ConfigRequest;
-import org.apache.solr.cloud.MiniSolrCloudCluster;
-import org.apache.solr.common.util.NamedList;
-import org.junit.Test;
-
-public class CustomTermsComponentTest extends ShardsWhitelistTest {
-
- public static class CustomTermsComponent extends TermsComponent {
-
- public void init( @SuppressWarnings({"rawtypes"})NamedList args )
- {
- super.init(args);
- }
-
- @Override
- protected void checkShardsWhitelist(final ResponseBuilder rb, final List<String> lst) {
- // ignore shards whitelist
- }
-
- }
-
- private static String addCustomHandlerWithTermsComponentConfig(final MiniSolrCloudCluster cluster, final String collection,
- final String defaultHandlerName, final String shardsWhitelist) throws Exception {
- return addCustomHandler(cluster, collection, defaultHandlerName, shardsWhitelist);
- }
-
- private static String addCustomHandlerWithCustomTermsComponent(final MiniSolrCloudCluster cluster, final String collection,
- final String defaultHandlerName) throws Exception {
- return addCustomHandler(cluster, collection, defaultHandlerName, null);
- }
-
- private static String addCustomHandler(final MiniSolrCloudCluster cluster, final String collection,
- final String defaultHandlerName, final String shardsWhitelist) throws Exception {
-
- // determine custom handler name (the exact name should not matter)
- final String customHandlerName = defaultHandlerName+"_custom"+random().nextInt();
-
- // determine custom terms component name (the exact name should not matter)
- final String customTermsComponentName = TermsComponent.COMPONENT_NAME+"_custom"+random().nextInt();
-
- // determine terms component class name and attributes
- final String customTermsComponentClass;
- final String customTermsComponentAttributesJSON;
- if (shardsWhitelist != null) {
- customTermsComponentClass = TermsComponent.class.getName();
- customTermsComponentAttributesJSON =
- " '"+HttpShardHandlerFactory.INIT_SHARDS_WHITELIST+"' : '"+shardsWhitelist+"',\n";
- } else {
- customTermsComponentClass = CustomTermsComponent.class.getName();
- customTermsComponentAttributesJSON = "";
- }
-
- // add custom component
- cluster.getSolrClient().request(
- new ConfigRequest(
- "{\n" +
- " 'add-searchcomponent': {\n" +
- customTermsComponentAttributesJSON +
- " 'name': '"+customTermsComponentName+"',\n" +
- " 'class': '"+customTermsComponentClass+"'\n" +
- " }\n" +
- "}"),
- collection);
-
- // add custom handler
- cluster.getSolrClient().request(
- new ConfigRequest(
- "{\n" +
- " 'add-requesthandler': {\n" +
- " 'name' : '"+customHandlerName+"',\n" +
- " 'class' : '"+SearchHandler.class.getName()+"',\n" +
- " 'components' : [ '"+QueryComponent.COMPONENT_NAME+"', '"+customTermsComponentName+"' ]\n" +
- " }\n" +
- "}"),
- collection);
-
- return customHandlerName;
- }
-
- @Test
- @Override
- public void test() throws Exception {
- for (final String clusterId : clusterId2cluster.keySet()) {
- final MiniSolrCloudCluster cluster = clusterId2cluster.get(clusterId);
- final String collection = COLLECTION_NAME;
- doTest(cluster, collection);
- }
- }
-
- private static void doTest(final MiniSolrCloudCluster cluster, final String collection) throws Exception {
-
- // add some documents
- final String id = "id";
- final String f1 = "a_t";
- final String f2 = "b_t";
- final String v1 = "bee";
- final String v2 = "buzz";
- {
- new UpdateRequest()
- .add(sdoc(id, 1, f1, v1, f2, v2+" "+v2+" "+v2))
- .add(sdoc(id, 2, f1, v1+" "+v1, f2, v2+" "+v2))
- .add(sdoc(id, 3, f1, v1+" "+v1+" "+v1, f2, v2))
- .commit(cluster.getSolrClient(), collection);
- }
-
- // search for the documents' terms ...
- final String defaultHandlerName = "/select";
-
- // search with the default handler ...
- final String shards = findAndCheckTerms(cluster, collection,
- defaultHandlerName,
- null, // ... without specifying shards
- (random().nextBoolean() ? null : f1), v1,
- (random().nextBoolean() ? null : f2), v2,
- null);
-
- // search with the default handler ...
- findAndCheckTerms(cluster, collection,
- defaultHandlerName,
- shards, // ... with specified shards, but all valid
- (random().nextBoolean() ? null : f1), v1,
- (random().nextBoolean() ? null : f2), v2,
- null);
-
- ignoreException("not on the shards whitelist");
- // this case should fail
- findAndCheckTerms(cluster, collection,
- defaultHandlerName,
- shards + ",http://" + DEAD_HOST_1, // ... with specified shards with one invalid
- (random().nextBoolean() ? null : f1), v1,
- (random().nextBoolean() ? null : f2), v2,
- "No live SolrServers available to handle this request");
- unIgnoreException("not on the shards whitelist");
-
- // configure a custom handler ...
- final String customHandlerName;
- if (random().nextBoolean()) {
- // ... with a shards whitelist
- customHandlerName = addCustomHandlerWithTermsComponentConfig(cluster, collection, defaultHandlerName, shards);
- } else {
- // ... with a custom terms component that disregards shards whitelist logic
- customHandlerName = addCustomHandlerWithCustomTermsComponent(cluster, collection, defaultHandlerName);
- }
-
- // search with the custom handler ...
- findAndCheckTerms(cluster, collection,
- customHandlerName,
- shards, // ... with specified shards
- (random().nextBoolean() ? null : f1), v1,
- (random().nextBoolean() ? null : f2), v2,
- null);
-
- }
-
- private static String findAndCheckTerms(final MiniSolrCloudCluster cluster, final String collection,
- String requestHandlerName, String in_shards,
- String field1, String value1,
- String field2, String value2,
- String solrServerExceptionMessagePrefix) throws IOException {
-
- // compose the query ...
- final SolrQuery solrQuery = new SolrQuery("*:*");
- solrQuery.setRequestHandler(requestHandlerName);
- solrQuery.add("shards.qt", requestHandlerName);
- // ... asking for terms ...
- solrQuery.setTerms(true);
- if (field1 != null) {
- solrQuery.addTermsField(field1);
- }
- if (field2 != null) {
- solrQuery.addTermsField(field2);
- }
- // ... and shards info ...
- solrQuery.add("shards.info", "true");
- // ... passing shards to use (if we have a preference)
- if (in_shards != null) {
- solrQuery.add("shards", in_shards);
- }
-
- // make the query
- final QueryResponse queryResponse;
- try {
- queryResponse = new QueryRequest(solrQuery)
- .process(cluster.getSolrClient(), collection);
- assertNull("expected exception ("+solrServerExceptionMessagePrefix+") not encountered", solrServerExceptionMessagePrefix);
- } catch (SolrServerException sse) {
- assertNotNull("unexpectedly caught exception "+sse, solrServerExceptionMessagePrefix);
- assertTrue(sse.getMessage().startsWith(solrServerExceptionMessagePrefix));
- assertThat(sse.getCause().getMessage(), containsString("not on the shards whitelist"));
- return null;
- }
-
- // analyse the response ...
- final TermsResponse termsResponse = queryResponse.getTermsResponse();
- // ... checking the terms returned ...
- checkTermsResponse(termsResponse, field1, value1);
- checkTermsResponse(termsResponse, field2, value2);
- // ... and assemble info about the shards ...
- final String out_shards = extractShardAddresses(queryResponse, ",");
- // ... to return to the caller
- return out_shards;
- }
-
-
- @SuppressWarnings("unchecked")
- private static String extractShardAddresses(final QueryResponse queryResponse, final String delimiter) {
- final StringBuilder sb = new StringBuilder();
- final NamedList<Object> nl = (NamedList<Object>)queryResponse.getResponse().get("shards.info");
- assertNotNull(queryResponse.toString(), nl);
- for (int ii = 0; ii < nl.size(); ++ii) {
- final String shardAddress = (String)((NamedList<Object>)nl.getVal(ii)).get("shardAddress");
- if (sb.length() > 0) {
- sb.append(delimiter);
- }
- sb.append(shardAddress);
- }
- return sb.toString();
- }
-
- private static void checkTermsResponse(TermsResponse termsResponse, String field, String value) {
- if (field != null) {
- final List<Term> ttList = termsResponse.getTerms(field);
- assertEquals(1, ttList.size());
- assertEquals(value, ttList.get(0).getTerm());
- }
- }
-
-}
diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java
index 9f0a26c..b83320c 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java
@@ -51,11 +51,11 @@ public class DistributedTermsComponentTest extends BaseDistributedSearchTestCase
del("*:*");
index(id, random.nextInt(), "b_t", "snake a,b spider shark snail slug seal", "foo_i_p", "1");
- query("qt", "/terms", "shards.qt", "/terms", "terms.fl", "foo_i_p");
+ query("qt", "/terms", "terms.fl", "foo_i_p");
del("*:*");
// verify point field on empty index
- query("qt", "/terms", "shards.qt", "/terms", "terms.fl", "foo_i_p");
+ query("qt", "/terms", "terms.fl", "foo_i_p");
index(id, random.nextInt(), "b_t", "snake a,b spider shark snail slug seal", "foo_i", "1");
index(id, random.nextInt(), "b_t", "snake spider shark snail slug", "foo_i", "2", "foo_date_p", "2015-01-03T14:30:00Z");
@@ -70,25 +70,25 @@ public class DistributedTermsComponentTest extends BaseDistributedSearchTestCase
handle.clear();
handle.put("terms", UNORDERED);
- query("qt", "/terms", "shards.qt", "/terms", "terms.fl", "b_t");
- query("qt", "/terms", "shards.qt", "/terms", "terms.limit", 5, "terms.fl", "b_t", "terms.lower", "s");
- query("qt", "/terms", "shards.qt", "/terms", "terms.limit", 5, "terms.fl", "b_t", "terms.prefix", "sn", "terms.lower", "sn");
- query("qt", "/terms", "shards.qt", "/terms", "terms.limit", 5, "terms.fl", "b_t", "terms.prefix", "s", "terms.lower", "s", "terms.upper", "sn");
+ query("qt", "/terms", "terms.fl", "b_t");
+ query("qt", "/terms", "terms.limit", 5, "terms.fl", "b_t", "terms.lower", "s");
+ query("qt", "/terms", "terms.limit", 5, "terms.fl", "b_t", "terms.prefix", "sn", "terms.lower", "sn");
+ query("qt", "/terms", "terms.limit", 5, "terms.fl", "b_t", "terms.prefix", "s", "terms.lower", "s", "terms.upper", "sn");
// terms.sort
- query("qt", "/terms", "shards.qt", "/terms", "terms.limit", 5, "terms.fl", "b_t", "terms.prefix", "s", "terms.lower", "s", "terms.sort", "index");
- query("qt", "/terms", "shards.qt", "/terms", "terms.limit", 5, "terms.fl", "b_t", "terms.prefix", "s", "terms.lower", "s", "terms.upper", "sn", "terms.sort", "index");
- query("qt", "/terms", "shards.qt", "/terms", "terms.fl", "b_t", "terms.sort", "index");
+ query("qt", "/terms", "terms.limit", 5, "terms.fl", "b_t", "terms.prefix", "s", "terms.lower", "s", "terms.sort", "index");
+ query("qt", "/terms", "terms.limit", 5, "terms.fl", "b_t", "terms.prefix", "s", "terms.lower", "s", "terms.upper", "sn", "terms.sort", "index");
+ query("qt", "/terms", "terms.fl", "b_t", "terms.sort", "index");
// terms.list
- query("qt", "/terms", "shards.qt", "/terms", "terms.fl", "b_t", "terms.list", "snake,zebra,ant,bad");
- query("qt", "/terms", "shards.qt", "/terms", "terms.fl", "foo_i", "terms.list", "2,3,1");
- query("qt", "/terms", "shards.qt", "/terms", "terms.fl", "foo_i", "terms.stats", "true","terms.list", "2,3,1");
- query("qt", "/terms", "shards.qt", "/terms", "terms.fl", "b_t", "terms.list", "snake,zebra", "terms.ttf", "true");
- query("qt", "/terms", "shards.qt", "/terms", "terms.fl", "b_t", "terms.fl", "c_t", "terms.list", "snake,ant,zebra", "terms.ttf", "true");
+ query("qt", "/terms", "terms.fl", "b_t", "terms.list", "snake,zebra,ant,bad");
+ query("qt", "/terms", "terms.fl", "foo_i", "terms.list", "2,3,1");
+ query("qt", "/terms", "terms.fl", "foo_i", "terms.stats", "true","terms.list", "2,3,1");
+ query("qt", "/terms", "terms.fl", "b_t", "terms.list", "snake,zebra", "terms.ttf", "true");
+ query("qt", "/terms", "terms.fl", "b_t", "terms.fl", "c_t", "terms.list", "snake,ant,zebra", "terms.ttf", "true");
// for date point field
- query("qt", "/terms", "shards.qt", "/terms", "terms.fl", "foo_date_p");
+ query("qt", "/terms", "terms.fl", "foo_date_p");
// terms.ttf=true doesn't work for point fields
- //query("qt", "/terms", "shards.qt", "/terms", "terms.fl", "foo_date_p", "terms.ttf", "true");
+ //query("qt", "/terms", "terms.fl", "foo_date_p", "terms.ttf", "true");
}
protected QueryResponse query(Object... q) throws Exception {
diff --git a/solr/solr-ref-guide/src/major-changes-in-solr-9.adoc b/solr/solr-ref-guide/src/major-changes-in-solr-9.adoc
index acebbce..f59f5e5 100644
--- a/solr/solr-ref-guide/src/major-changes-in-solr-9.adoc
+++ b/solr/solr-ref-guide/src/major-changes-in-solr-9.adoc
@@ -128,6 +128,8 @@ _(raw; not yet edited)_
* SOLR-14510: The `writeStartDocumentList` in `TextResponseWriter` now receives an extra boolean parameter representing the "exactness" of the numFound value (exact vs approximation).
Any custom response writer extending `TextResponseWriter` will need to implement this abstract method now (instead previous with the same name but without the new boolean parameter).
+* SOLR-14036: Implicit /terms handler now returns terms across all shards in SolrCloud instead of only the local core. Users/apps may be assuming the old behavior. A request can be modified via the standard distrib=false param to only use the local core receiving the request.
+
* SOLR-12847: maxShardsPerNode parameter has been removed because it was broken and inconsistent with other replica placement strategies. Other relevant placement strategies
should be used instead, such as autoscaling policy or rules-based placement.
diff --git a/solr/solr-ref-guide/src/the-terms-component.adoc b/solr/solr-ref-guide/src/the-terms-component.adoc
index b83e03f..e53f469 100644
--- a/solr/solr-ref-guide/src/the-terms-component.adoc
+++ b/solr/solr-ref-guide/src/the-terms-component.adoc
@@ -35,7 +35,6 @@ The definition is equivalent to:
=== Using the Terms Component in a Request Handler
Solr comes with an <<implicit-requesthandlers.adoc#query-handlers,Implicit RequestHandler>> definition `/terms`, which enables (only) Terms component.
-This handler, by default, can only be used on a single Solr core (`distrib=false`).
If you want to enable Terms component when using another Request Handler, `terms=true` parameter needs to be passed during the request or be set in the handler's defaults.
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/ScoreNodesStream.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/ScoreNodesStream.java
index e4f9ebb..bd04263 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/ScoreNodesStream.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/ScoreNodesStream.java
@@ -42,8 +42,6 @@ import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.TermsParams;
import org.apache.solr.common.util.NamedList;
-import static org.apache.solr.common.params.CommonParams.DISTRIB;
-
/**
* Iterates over a gatherNodes() expression and scores the Tuples based on tf-idf.
*
@@ -209,12 +207,10 @@ public class ScoreNodesStream extends TupleStream implements Expressible
CloudSolrClient client = clientCache.getCloudSolrClient(zkHost);
ModifiableSolrParams params = new ModifiableSolrParams();
params.add(CommonParams.QT, "/terms");
- params.add(TermsParams.TERMS, "true");
params.add(TermsParams.TERMS_FIELD, field);
params.add(TermsParams.TERMS_STATS, "true");
params.add(TermsParams.TERMS_LIST, builder.toString());
params.add(TermsParams.TERMS_LIMIT, Integer.toString(nodes.size()));
- params.add(DISTRIB, "true");
QueryRequest request = new QueryRequest(params);