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'