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.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 @@ private static boolean isSolrRunningOn(String url) throws Exception { } 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 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.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.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 @@ 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 void runImpl(CommandLine cli) throws Exception { 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 static String normalizeSolrUrl(CommandLine cli) throws Exception { 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'