You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by ep...@apache.org on 2023/05/22 21:39:08 UTC

[solr] branch main updated: Factor out ModifiableSolrParams.setShardAttributesToParams method (#1570)

This is an automated email from the ASF dual-hosted git repository.

epugh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new ac07921b42e Factor out ModifiableSolrParams.setShardAttributesToParams method (#1570)
ac07921b42e is described below

commit ac07921b42efa20bc7f59c636076b430e0b4d460
Author: Renato Haeberli <re...@onnet.ch>
AuthorDate: Mon May 22 23:39:02 2023 +0200

    Factor out ModifiableSolrParams.setShardAttributesToParams method (#1570)
---
 .../solr/handler/component/SearchHandler.java       |  9 +--------
 .../handler/component/TaskManagementHandler.java    | 10 +---------
 .../org/apache/solr/common/params/CommonParams.java |  2 ++
 .../solr/common/params/ModifiableSolrParams.java    | 14 ++++++++++++++
 .../common/params/ModifiableSolrParamsTest.java     | 21 +++++++++++++++++++++
 5 files changed, 39 insertions(+), 17 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
index b697eb11934..fb84bb827de 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
@@ -498,14 +498,7 @@ public class SearchHandler extends RequestHandlerBase
             // TODO: map from shard to address[]
             for (String shard : sreq.actualShards) {
               ModifiableSolrParams params = new ModifiableSolrParams(sreq.params);
-              params.remove(ShardParams.SHARDS); // not a top-level request
-              params.set(DISTRIB, "false"); // not a top-level request
-              params.remove("indent");
-              params.remove(CommonParams.HEADER_ECHO_PARAMS);
-              params.set(ShardParams.IS_SHARD, true); // a sub (shard) request
-              params.set(ShardParams.SHARDS_PURPOSE, sreq.purpose);
-              params.set(ShardParams.SHARD_URL, shard); // so the shard knows what was asked
-              params.set(CommonParams.OMIT_HEADER, false);
+              params.setShardAttributesToParams(sreq.purpose, shard);
 
               // Distributed request -- need to send queryID as a part of the distributed request
               params.setNonNull(ShardParams.QUERY_ID, rb.queryID);
diff --git a/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java b/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java
index e759f1ac1a5..43b3cdf0e9b 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java
@@ -26,7 +26,6 @@ import java.util.Map;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.common.params.ShardParams;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.handler.RequestHandlerBase;
@@ -80,14 +79,7 @@ public abstract class TaskManagementHandler extends RequestHandlerBase
         String reqPath = (String) req.getContext().get(PATH);
 
         params.set(CommonParams.QT, reqPath);
-        params.remove(ShardParams.SHARDS); // not a top-level request
-        params.set(DISTRIB, "false"); // not a top-level request
-        params.remove("indent");
-        params.remove(CommonParams.HEADER_ECHO_PARAMS);
-        params.set(ShardParams.IS_SHARD, true); // a sub (shard) request
-        params.set(ShardParams.SHARDS_PURPOSE, sreq.purpose);
-        params.set(ShardParams.SHARD_URL, shard); // so the shard knows what was asked
-        params.set(CommonParams.OMIT_HEADER, false);
+        params.setShardAttributesToParams(sreq.purpose, shard);
 
         if (extraParams != null) {
           for (Map.Entry<String, String> entry : extraParams.entrySet()) {
diff --git a/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java b/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java
index 06b279af842..740be2e128f 100644
--- a/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java
+++ b/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java
@@ -69,6 +69,8 @@ public interface CommonParams {
 
   int ROWS_DEFAULT = 10;
 
+  String INDENT = "indent";
+
   // SOLR-4228 start
   /** handler value for SolrPing */
   String PING_HANDLER = "/admin/ping";
diff --git a/solr/solrj/src/java/org/apache/solr/common/params/ModifiableSolrParams.java b/solr/solrj/src/java/org/apache/solr/common/params/ModifiableSolrParams.java
index 5ee078b2602..47469e2e911 100644
--- a/solr/solrj/src/java/org/apache/solr/common/params/ModifiableSolrParams.java
+++ b/solr/solrj/src/java/org/apache/solr/common/params/ModifiableSolrParams.java
@@ -16,6 +16,9 @@
  */
 package org.apache.solr.common.params;
 
+import static org.apache.solr.common.params.CommonParams.DISTRIB;
+import static org.apache.solr.common.params.CommonParams.INDENT;
+
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.Map;
@@ -175,6 +178,17 @@ public class ModifiableSolrParams extends SolrParams {
   // ----------------------------------------------------------------
   // ----------------------------------------------------------------
 
+  public void setShardAttributesToParams(int purpose, String shardUrl) {
+    remove(ShardParams.SHARDS); // not a top-level request
+    set(DISTRIB, Boolean.FALSE.toString()); // not a top-level request
+    remove(INDENT);
+    remove(CommonParams.HEADER_ECHO_PARAMS);
+    set(ShardParams.IS_SHARD, true); // a sub (shard) request
+    set(ShardParams.SHARDS_PURPOSE, purpose);
+    set(ShardParams.SHARD_URL, shardUrl); // so the shard knows what was asked
+    set(CommonParams.OMIT_HEADER, false);
+  }
+
   @Override
   public String get(String param) {
     String[] v = vals.get(param);
diff --git a/solr/solrj/src/test/org/apache/solr/common/params/ModifiableSolrParamsTest.java b/solr/solrj/src/test/org/apache/solr/common/params/ModifiableSolrParamsTest.java
index 2304b3abe06..91871062889 100644
--- a/solr/solrj/src/test/org/apache/solr/common/params/ModifiableSolrParamsTest.java
+++ b/solr/solrj/src/test/org/apache/solr/common/params/ModifiableSolrParamsTest.java
@@ -127,6 +127,27 @@ public class ModifiableSolrParamsTest extends SolrTestCase {
     compareArrays("checking Hello World Universe ", helloWorldUniverse, result);
   }
 
+  public void testSetShardAttributesToParams() {
+    var dummyShardUrl = "Shard-Url";
+    var dummyIndent = "Dummy-Indent";
+
+    modifiable.set(ShardParams.SHARDS, "dummyValue");
+    modifiable.set(CommonParams.HEADER_ECHO_PARAMS, "dummyValue");
+    modifiable.set(CommonParams.INDENT, dummyIndent);
+
+    modifiable.setShardAttributesToParams(2, dummyShardUrl);
+
+    assertEquals(Boolean.FALSE.toString(), modifiable.get(CommonParams.DISTRIB));
+    assertEquals(dummyShardUrl, modifiable.get(ShardParams.SHARD_URL));
+    assertEquals("2", modifiable.get(ShardParams.SHARDS_PURPOSE));
+    assertEquals(Boolean.FALSE.toString(), modifiable.get(CommonParams.OMIT_HEADER));
+    assertEquals(Boolean.TRUE.toString(), modifiable.get(ShardParams.IS_SHARD));
+
+    assertNull(modifiable.get(CommonParams.HEADER_ECHO_PARAMS));
+    assertNull(modifiable.get(ShardParams.SHARDS));
+    assertNull(modifiable.get(CommonParams.INDENT));
+  }
+
   private void compareArrays(String prefix, String[] expected, String[] actual) {
     assertEquals(prefix + "length: ", expected.length, actual.length);
     for (int i = 0; i < expected.length; ++i) {