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

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


The following commit(s) were added to refs/heads/branch_9x by this push:
     new 77e2ca88166 SOLR-17489 Fix bad backport to 9x
77e2ca88166 is described below

commit 77e2ca88166ad250fe75375edc61aed150553e8a
Author: Jan Høydahl <[email protected]>
AuthorDate: Sun Oct 20 22:35:15 2024 +0200

    SOLR-17489 Fix bad backport to 9x
    
    * Use SolrCLI.getSolrClient(url) consistently in AssertTool
    * Backport BATS test that we need
    * Copy pattern from SolrCLI to handle hostContext in PostTool
    
    Co-authored-by: Eric Pugh <[email protected]>
---
 solr/core/src/java/org/apache/solr/cli/AssertTool.java |  3 +--
 solr/core/src/java/org/apache/solr/cli/PostTool.java   | 18 ++++++++++++++++--
 solr/core/src/java/org/apache/solr/cli/SolrCLI.java    |  1 -
 solr/packaging/test/test_assert.bats                   | 14 ++++++++++++++
 solr/packaging/test/test_placement_plugin.bats         |  4 ++--
 5 files changed, 33 insertions(+), 7 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cli/AssertTool.java 
b/solr/core/src/java/org/apache/solr/cli/AssertTool.java
index 4474c2f744f..8a1120d542f 100644
--- a/solr/core/src/java/org/apache/solr/cli/AssertTool.java
+++ b/solr/core/src/java/org/apache/solr/cli/AssertTool.java
@@ -32,7 +32,6 @@ import org.apache.commons.cli.Option;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.Http2SolrClient;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
 import org.apache.solr.client.solrj.request.HealthCheckRequest;
 import org.apache.solr.client.solrj.response.CollectionAdminResponse;
@@ -531,7 +530,7 @@ public class AssertTool extends ToolBase {
   }
 
   private static boolean runningSolrIsCloud(String url) throws Exception {
-    try (final SolrClient client = new Http2SolrClient.Builder(url).build()) {
+    try (final SolrClient client = SolrCLI.getSolrClient(url)) {
       final SolrRequest<CollectionAdminResponse> request =
           new CollectionAdminRequest.ClusterStatus();
       final CollectionAdminResponse response = request.process(client);
diff --git a/solr/core/src/java/org/apache/solr/cli/PostTool.java 
b/solr/core/src/java/org/apache/solr/cli/PostTool.java
index f8c92d2d4b8..275067fb34e 100644
--- a/solr/core/src/java/org/apache/solr/cli/PostTool.java
+++ b/solr/core/src/java/org/apache/solr/cli/PostTool.java
@@ -30,6 +30,7 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.io.PrintStream;
+import java.lang.invoke.MethodHandles;
 import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
 import java.net.ProtocolException;
@@ -74,6 +75,8 @@ import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.common.util.Utils;
 import org.apache.solr.util.RTimer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
@@ -81,6 +84,8 @@ import org.xml.sax.SAXException;
 
 public class PostTool extends ToolBase {
 
+  private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
   public static final String DEFAULT_FILE_TYPES =
       
"xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log";
   static final String DATA_MODE_FILES = "files";
@@ -315,8 +320,17 @@ public class PostTool extends ToolBase {
         throw new IllegalArgumentException(
             "Must specify -c / --name parameter with --solr-url to post 
documents.");
       }
-      String url =
-          SolrCLI.normalizeSolrUrl(cli) + "/solr/" + 
cli.getOptionValue("name") + "/update";
+
+      String solrUrl = cli.getOptionValue("solr-url");
+
+      String hostContext = System.getProperty("hostContext", "/solr");
+      if (hostContext.isBlank()) {
+        log.warn("Invalid hostContext {} provided, setting to /solr", 
hostContext);
+        hostContext = "/solr";
+      }
+
+      solrUrl = SolrCLI.normalizeSolrUrl(solrUrl, true, hostContext) + 
hostContext;
+      String url = solrUrl + "/" + cli.getOptionValue("name") + "/update";
       solrUpdateUrl = new URI(url);
 
     } else if (cli.hasOption("solr-update-url")) {
diff --git a/solr/core/src/java/org/apache/solr/cli/SolrCLI.java 
b/solr/core/src/java/org/apache/solr/cli/SolrCLI.java
index 45af136a4fa..74c4f7fb604 100755
--- a/solr/core/src/java/org/apache/solr/cli/SolrCLI.java
+++ b/solr/core/src/java/org/apache/solr/cli/SolrCLI.java
@@ -792,7 +792,6 @@ public class SolrCLI implements CLIO {
 
           String firstLiveNode = liveNodes.iterator().next();
           solrUrl = 
ZkStateReader.from(cloudSolrClient).getBaseUrlForNodeName(firstLiveNode);
-          // solrUrl = normalizeSolrUrl(solrUrl, false);
         }
       }
     }
diff --git a/solr/packaging/test/test_assert.bats 
b/solr/packaging/test/test_assert.bats
index 007a147e9ed..397e6e3030d 100644
--- a/solr/packaging/test/test_assert.bats
+++ b/solr/packaging/test/test_assert.bats
@@ -42,3 +42,17 @@ teardown() {
 
   run ! solr assert --cloud http://localhost:${SOLR_PORT} --exitcode
 }
+
+@test "assert for cloud mode" {
+  run solr start --cloud
+  solr assert --started http://localhost:${SOLR_PORT} --timeout 5000
+
+  run solr assert --cloud http://localhost:${SOLR_PORT}
+  refute_output --partial "ERROR"
+
+  run solr assert --not-cloud http://localhost:${SOLR_PORT}/solr
+  assert_output --partial "needn't include Solr's context-root"
+  assert_output --partial "ERROR: Solr is not running in standalone mode"
+
+  run ! solr assert --not-cloud http://localhost:${SOLR_PORT} --exitcode
+}
diff --git a/solr/packaging/test/test_placement_plugin.bats 
b/solr/packaging/test/test_placement_plugin.bats
index ba4664b0074..6187f6b8256 100644
--- a/solr/packaging/test/test_placement_plugin.bats
+++ b/solr/packaging/test/test_placement_plugin.bats
@@ -31,7 +31,7 @@ teardown() {
 
 @test "Affinity placement plugin using sysprop" {
   run solr start -c -Dsolr.placementplugin.default=affinity
-  solr assert --cloud http://localhost:${SOLR_PORT}/solr --timeout 3000
+  solr assert --cloud http://localhost:${SOLR_PORT} --timeout 3000
   run solr create -c COLL_NAME
   collection_exists COLL_NAME
   assert_file_contains "${SOLR_LOGS_DIR}/solr.log" 'Default replica placement 
plugin set in solr\.placementplugin\.default to affinity'
@@ -40,7 +40,7 @@ teardown() {
 @test "Random placement plugin using ENV" {
   export SOLR_PLACEMENTPLUGIN_DEFAULT=random
   run solr start -c
-  solr assert --cloud http://localhost:${SOLR_PORT}/solr --timeout 3000
+  solr assert --cloud http://localhost:${SOLR_PORT} --timeout 3000
   run solr create -c COLL_NAME
   collection_exists COLL_NAME
   assert_file_contains "${SOLR_LOGS_DIR}/solr.log" 'Default replica placement 
plugin set in solr\.placementplugin\.default to random'

Reply via email to