SOLR-17248: Refactor ZK related SolrCli tools to separate SolrZkClient and CloudSolrClient instantiation/usage (#2417)
---------
Co-authored-by: Lamine Idjeraoui <lidjeraoui@apple.com>
Co-authored-by: Eric Pugh <epugh@opensourceconnections.com>
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 5d04aa4..3251785 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -123,7 +123,7 @@
Other Changes
---------------------
-(No changes)
+* SOLR-17248: Refactor ZK related SolrCli tools to separate SolrZkClient and CloudSolrClient instantiation/usage (Lamine Idjeraoui via Eric Pugh)
================== 9.6.0 ==================
New Features
diff --git a/solr/core/src/java/org/apache/solr/cli/AuthTool.java b/solr/core/src/java/org/apache/solr/cli/AuthTool.java
index abaeb0a..8dfeb5c 100644
--- a/solr/core/src/java/org/apache/solr/cli/AuthTool.java
+++ b/solr/core/src/java/org/apache/solr/cli/AuthTool.java
@@ -33,13 +33,11 @@
import java.util.Base64;
import java.util.List;
import java.util.Locale;
-import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.lucene.util.Constants;
-import org.apache.solr.client.solrj.impl.SolrZkClientTimeout;
import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.util.StrUtils;
import org.apache.solr.core.SolrCore;
@@ -186,12 +184,7 @@
// check if security is already enabled or not
if (!zkInaccessible) {
- try (SolrZkClient zkClient =
- new SolrZkClient.Builder()
- .withUrl(zkHost)
- .withTimeout(
- SolrZkClientTimeout.DEFAULT_ZK_CLIENT_TIMEOUT, TimeUnit.MILLISECONDS)
- .build()) {
+ try (SolrZkClient zkClient = SolrCLI.getSolrZkClient(cli, zkHost)) {
checkSecurityJsonExists(zkClient);
} catch (Exception ex) {
CLIO.out(
@@ -206,12 +199,7 @@
if (!updateIncludeFileOnly) {
if (!zkInaccessible) {
echoIfVerbose("Uploading following security.json: " + securityJson, cli);
- try (SolrZkClient zkClient =
- new SolrZkClient.Builder()
- .withUrl(zkHost)
- .withTimeout(
- SolrZkClientTimeout.DEFAULT_ZK_CLIENT_TIMEOUT, TimeUnit.MILLISECONDS)
- .build()) {
+ try (SolrZkClient zkClient = SolrCLI.getSolrZkClient(cli, zkHost)) {
zkClient.setData(
"/security.json", securityJson.getBytes(StandardCharsets.UTF_8), true);
} catch (Exception ex) {
@@ -322,11 +310,7 @@
}
// check if security is already enabled or not
- try (SolrZkClient zkClient =
- new SolrZkClient.Builder()
- .withUrl(zkHost)
- .withTimeout(SolrZkClientTimeout.DEFAULT_ZK_CLIENT_TIMEOUT, TimeUnit.MILLISECONDS)
- .build()) {
+ try (SolrZkClient zkClient = SolrCLI.getSolrZkClient(cli, zkHost)) {
checkSecurityJsonExists(zkClient);
}
}
@@ -374,11 +358,7 @@
if (!updateIncludeFileOnly) {
echoIfVerbose("Uploading following security.json: " + securityJson, cli);
- try (SolrZkClient zkClient =
- new SolrZkClient.Builder()
- .withUrl(zkHost)
- .withTimeout(SolrZkClientTimeout.DEFAULT_ZK_CLIENT_TIMEOUT, TimeUnit.MILLISECONDS)
- .build()) {
+ try (SolrZkClient zkClient = SolrCLI.getSolrZkClient(cli, zkHost)) {
zkClient.setData("/security.json", securityJson.getBytes(StandardCharsets.UTF_8), true);
}
}
@@ -469,11 +449,7 @@
echoIfVerbose("Uploading following security.json: {}", cli);
- try (SolrZkClient zkClient =
- new SolrZkClient.Builder()
- .withUrl(zkHost)
- .withTimeout(SolrZkClientTimeout.DEFAULT_ZK_CLIENT_TIMEOUT, TimeUnit.MILLISECONDS)
- .build()) {
+ try (SolrZkClient zkClient = SolrCLI.getSolrZkClient(cli, zkHost)) {
zkClient.setData("/security.json", "{}".getBytes(StandardCharsets.UTF_8), true);
}
}
diff --git a/solr/core/src/java/org/apache/solr/cli/ConfigSetDownloadTool.java b/solr/core/src/java/org/apache/solr/cli/ConfigSetDownloadTool.java
index 6c838e7..16fb2bd 100644
--- a/solr/core/src/java/org/apache/solr/cli/ConfigSetDownloadTool.java
+++ b/solr/core/src/java/org/apache/solr/cli/ConfigSetDownloadTool.java
@@ -22,10 +22,8 @@
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
-import java.util.concurrent.TimeUnit;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
-import org.apache.solr.client.solrj.impl.SolrZkClientTimeout;
import org.apache.solr.common.cloud.SolrZkClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -73,18 +71,8 @@
public void runImpl(CommandLine cli) throws Exception {
SolrCLI.raiseLogLevelUnlessVerbose(cli);
String zkHost = SolrCLI.getZkHost(cli);
- if (zkHost == null) {
- throw new IllegalStateException(
- "Solr at "
- + cli.getOptionValue("solrUrl")
- + " is running in standalone server mode, downconfig can only be used when running in SolrCloud mode.\n");
- }
- try (SolrZkClient zkClient =
- new SolrZkClient.Builder()
- .withUrl(zkHost)
- .withTimeout(SolrZkClientTimeout.DEFAULT_ZK_CLIENT_TIMEOUT, TimeUnit.MILLISECONDS)
- .build()) {
+ try (SolrZkClient zkClient = SolrCLI.getSolrZkClient(cli, zkHost)) {
echoIfVerbose("\nConnecting to ZooKeeper at " + zkHost + " ...", cli);
String confName = cli.getOptionValue("confname");
String confDir = cli.getOptionValue("confdir");
diff --git a/solr/core/src/java/org/apache/solr/cli/ConfigSetUploadTool.java b/solr/core/src/java/org/apache/solr/cli/ConfigSetUploadTool.java
index c82e0ee..1ad8ca5 100644
--- a/solr/core/src/java/org/apache/solr/cli/ConfigSetUploadTool.java
+++ b/solr/core/src/java/org/apache/solr/cli/ConfigSetUploadTool.java
@@ -20,10 +20,8 @@
import java.lang.invoke.MethodHandles;
import java.nio.file.Path;
import java.util.List;
-import java.util.concurrent.TimeUnit;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
-import org.apache.solr.client.solrj.impl.SolrZkClientTimeout;
import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.cloud.ZkMaintenanceUtils;
import org.apache.solr.core.ConfigSetService;
@@ -80,19 +78,9 @@
public void runImpl(CommandLine cli) throws Exception {
SolrCLI.raiseLogLevelUnlessVerbose(cli);
String zkHost = SolrCLI.getZkHost(cli);
- if (zkHost == null) {
- throw new IllegalStateException(
- "Solr at "
- + cli.getOptionValue("solrUrl")
- + " is running in standalone server mode, upconfig can only be used when running in SolrCloud mode.\n");
- }
String confName = cli.getOptionValue("confname");
- try (SolrZkClient zkClient =
- new SolrZkClient.Builder()
- .withUrl(zkHost)
- .withTimeout(SolrZkClientTimeout.DEFAULT_ZK_CLIENT_TIMEOUT, TimeUnit.MILLISECONDS)
- .build()) {
+ try (SolrZkClient zkClient = SolrCLI.getSolrZkClient(cli, zkHost)) {
echoIfVerbose("\nConnecting to ZooKeeper at " + zkHost + " ...", cli);
Path confPath =
ConfigSetService.getConfigsetPath(
diff --git a/solr/core/src/java/org/apache/solr/cli/CreateTool.java b/solr/core/src/java/org/apache/solr/cli/CreateTool.java
index 5e7fcd8..36a3247 100644
--- a/solr/core/src/java/org/apache/solr/cli/CreateTool.java
+++ b/solr/core/src/java/org/apache/solr/cli/CreateTool.java
@@ -21,11 +21,9 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.Map;
-import java.util.Optional;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.apache.commons.cli.CommandLine;
@@ -35,7 +33,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.CloudHttp2SolrClient;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
import org.apache.solr.client.solrj.impl.Http2SolrClient;
import org.apache.solr.client.solrj.impl.JsonMapResponseParser;
@@ -206,10 +203,7 @@
.withOptionalBasicAuthCredentials(
cli.getOptionValue(SolrCLI.OPTION_CREDENTIALS.getLongOpt()));
String zkHost = SolrCLI.getZkHost(cli);
- try (CloudSolrClient cloudSolrClient =
- new CloudHttp2SolrClient.Builder(Collections.singletonList(zkHost), Optional.empty())
- .withInternalClientBuilder(builder)
- .build()) {
+ try (CloudSolrClient cloudSolrClient = SolrCLI.getCloudHttp2SolrClient(zkHost, builder)) {
echoIfVerbose("Connecting to ZooKeeper at " + zkHost, cli);
cloudSolrClient.connect();
createCollection(cloudSolrClient, cli);
diff --git a/solr/core/src/java/org/apache/solr/cli/DeleteTool.java b/solr/core/src/java/org/apache/solr/cli/DeleteTool.java
index 26df356..94bfdad 100644
--- a/solr/core/src/java/org/apache/solr/cli/DeleteTool.java
+++ b/solr/core/src/java/org/apache/solr/cli/DeleteTool.java
@@ -20,7 +20,6 @@
import java.io.PrintStream;
import java.lang.invoke.MethodHandles;
-import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.Set;
@@ -29,7 +28,6 @@
import org.apache.commons.cli.Option;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.CloudHttp2SolrClient;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
import org.apache.solr.client.solrj.impl.Http2SolrClient;
import org.apache.solr.client.solrj.impl.JsonMapResponseParser;
@@ -111,10 +109,7 @@
.withOptionalBasicAuthCredentials(cli.getOptionValue(("credentials")));
String zkHost = SolrCLI.getZkHost(cli);
- try (CloudSolrClient cloudSolrClient =
- new CloudHttp2SolrClient.Builder(Collections.singletonList(zkHost), Optional.empty())
- .withInternalClientBuilder(builder)
- .build()) {
+ try (CloudSolrClient cloudSolrClient = SolrCLI.getCloudHttp2SolrClient(zkHost, builder)) {
echoIfVerbose("Connecting to ZooKeeper at " + zkHost, cli);
cloudSolrClient.connect();
deleteCollection(cloudSolrClient, cli);
diff --git a/solr/core/src/java/org/apache/solr/cli/HealthcheckTool.java b/solr/core/src/java/org/apache/solr/cli/HealthcheckTool.java
index 90b0023..4c3d669 100644
--- a/solr/core/src/java/org/apache/solr/cli/HealthcheckTool.java
+++ b/solr/core/src/java/org/apache/solr/cli/HealthcheckTool.java
@@ -24,11 +24,9 @@
import java.lang.invoke.MethodHandles;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.Set;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
@@ -93,9 +91,7 @@
CLIO.err("Healthcheck tool only works in Solr Cloud mode.");
System.exit(1);
}
- try (CloudHttp2SolrClient cloudSolrClient =
- new CloudHttp2SolrClient.Builder(Collections.singletonList(zkHost), Optional.empty())
- .build()) {
+ try (CloudHttp2SolrClient cloudSolrClient = SolrCLI.getCloudHttp2SolrClient(zkHost)) {
echoIfVerbose("\nConnecting to ZooKeeper at " + zkHost + " ...", cli);
cloudSolrClient.connect();
runCloudTool(cloudSolrClient, cli);
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 27250c6..191fb48 100755
--- a/solr/core/src/java/org/apache/solr/cli/SolrCLI.java
+++ b/solr/core/src/java/org/apache/solr/cli/SolrCLI.java
@@ -54,11 +54,13 @@
import org.apache.solr.client.solrj.impl.CloudHttp2SolrClient;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
import org.apache.solr.client.solrj.impl.Http2SolrClient;
+import org.apache.solr.client.solrj.impl.SolrZkClientTimeout;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
import org.apache.solr.client.solrj.request.CoreAdminRequest;
import org.apache.solr.client.solrj.request.GenericSolrRequest;
import org.apache.solr.common.SolrException;
+import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.cloud.ZkStateReader;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.util.ContentStreamBase;
@@ -557,9 +559,7 @@
+ ".");
} else {
- try (CloudSolrClient cloudSolrClient =
- new CloudHttp2SolrClient.Builder(Collections.singletonList(zkHost), Optional.empty())
- .build()) {
+ try (CloudSolrClient cloudSolrClient = getCloudHttp2SolrClient(zkHost)) {
cloudSolrClient.connect();
Set<String> liveNodes = cloudSolrClient.getClusterState().getLiveNodes();
if (liveNodes.isEmpty())
@@ -610,6 +610,34 @@
return zkHost;
}
+ public static SolrZkClient getSolrZkClient(CommandLine cli) throws Exception {
+ return getSolrZkClient(cli, getZkHost(cli));
+ }
+
+ public static SolrZkClient getSolrZkClient(CommandLine cli, String zkHost) throws Exception {
+ if (zkHost == null) {
+ throw new IllegalStateException(
+ "Solr at "
+ + cli.getOptionValue("solrUrl")
+ + " is running in standalone server mode, this command can only be used when running in SolrCloud mode.\n");
+ }
+ return new SolrZkClient.Builder()
+ .withUrl(zkHost)
+ .withTimeout(SolrZkClientTimeout.DEFAULT_ZK_CLIENT_TIMEOUT, TimeUnit.MILLISECONDS)
+ .build();
+ }
+
+ public static CloudHttp2SolrClient getCloudHttp2SolrClient(String zkHost) {
+ return getCloudHttp2SolrClient(zkHost, null);
+ }
+
+ public static CloudHttp2SolrClient getCloudHttp2SolrClient(
+ String zkHost, Http2SolrClient.Builder builder) {
+ return new CloudHttp2SolrClient.Builder(Collections.singletonList(zkHost), Optional.empty())
+ .withInternalClientBuilder(builder)
+ .build();
+ }
+
public static boolean safeCheckCollectionExists(
String solrUrl, String collection, String credentials) {
boolean exists = false;
diff --git a/solr/core/src/java/org/apache/solr/cli/ZkCpTool.java b/solr/core/src/java/org/apache/solr/cli/ZkCpTool.java
index af1da32..095588e 100644
--- a/solr/core/src/java/org/apache/solr/cli/ZkCpTool.java
+++ b/solr/core/src/java/org/apache/solr/cli/ZkCpTool.java
@@ -87,12 +87,6 @@
public void runImpl(CommandLine cli) throws Exception {
SolrCLI.raiseLogLevelUnlessVerbose(cli);
String zkHost = SolrCLI.getZkHost(cli);
- if (zkHost == null) {
- throw new IllegalStateException(
- "Solr at "
- + cli.getOptionValue("solrUrl")
- + " is running in standalone server mode, cp can only be used when running in SolrCloud mode.\n");
- }
echoIfVerbose("\nConnecting to ZooKeeper at " + zkHost + " ...", cli);
String src = cli.getOptionValue("src");
@@ -153,7 +147,7 @@
} catch (SolrException e) {
// Failed to load solr.xml
throw new IllegalStateException(
- "Failed to load solr.xml from ZK or SolrHome, put/get operations on compressed data will use data as is. If your intention is to read and de-compress data or compress and write data, then solr.xml must be accessible.");
+ "Failed to load solr.xml, put/get operations on compressed data will use data as is. If your intention is to read and de-compress data or compress and write data, then solr.xml must be accessible.");
} catch (ClassNotFoundException
| NoSuchMethodException
| InstantiationException
@@ -167,7 +161,6 @@
if (minStateByteLenForCompression > -1) {
echoIfVerbose("Compression of state.json has been enabled", cli);
}
-
try (SolrZkClient zkClient =
new SolrZkClient.Builder()
.withUrl(zkHost)
diff --git a/solr/core/src/java/org/apache/solr/cli/ZkLsTool.java b/solr/core/src/java/org/apache/solr/cli/ZkLsTool.java
index 8036806..9e40604 100644
--- a/solr/core/src/java/org/apache/solr/cli/ZkLsTool.java
+++ b/solr/core/src/java/org/apache/solr/cli/ZkLsTool.java
@@ -19,10 +19,8 @@
import java.io.PrintStream;
import java.lang.invoke.MethodHandles;
import java.util.List;
-import java.util.concurrent.TimeUnit;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
-import org.apache.solr.client.solrj.impl.SolrZkClientTimeout;
import org.apache.solr.common.cloud.SolrZkClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -64,18 +62,7 @@
SolrCLI.raiseLogLevelUnlessVerbose(cli);
String zkHost = SolrCLI.getZkHost(cli);
- if (zkHost == null) {
- throw new IllegalStateException(
- "Solr at "
- + cli.getOptionValue("zkHost")
- + " is running in standalone server mode, 'zk ls' can only be used when running in SolrCloud mode.\n");
- }
-
- try (SolrZkClient zkClient =
- new SolrZkClient.Builder()
- .withUrl(zkHost)
- .withTimeout(SolrZkClientTimeout.DEFAULT_ZK_CLIENT_TIMEOUT, TimeUnit.MILLISECONDS)
- .build()) {
+ try (SolrZkClient zkClient = SolrCLI.getSolrZkClient(cli, zkHost)) {
echoIfVerbose("\nConnecting to ZooKeeper at " + zkHost + " ...", cli);
String znode = cli.getOptionValue("path");
diff --git a/solr/core/src/java/org/apache/solr/cli/ZkMkrootTool.java b/solr/core/src/java/org/apache/solr/cli/ZkMkrootTool.java
index f1024ee..72856ae 100644
--- a/solr/core/src/java/org/apache/solr/cli/ZkMkrootTool.java
+++ b/solr/core/src/java/org/apache/solr/cli/ZkMkrootTool.java
@@ -19,10 +19,8 @@
import java.io.PrintStream;
import java.lang.invoke.MethodHandles;
import java.util.List;
-import java.util.concurrent.TimeUnit;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
-import org.apache.solr.client.solrj.impl.SolrZkClientTimeout;
import org.apache.solr.common.cloud.SolrZkClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -71,18 +69,7 @@
String zkHost = SolrCLI.getZkHost(cli);
boolean failOnExists = cli.hasOption("fail-on-exists");
- if (zkHost == null) {
- throw new IllegalStateException(
- "Solr at "
- + cli.getOptionValue("zkHost")
- + " is running in standalone server mode, 'zk mkroot' can only be used when running in SolrCloud mode.\n");
- }
-
- try (SolrZkClient zkClient =
- new SolrZkClient.Builder()
- .withUrl(zkHost)
- .withTimeout(SolrZkClientTimeout.DEFAULT_ZK_CLIENT_TIMEOUT, TimeUnit.MILLISECONDS)
- .build()) {
+ try (SolrZkClient zkClient = SolrCLI.getSolrZkClient(cli, zkHost)) {
echoIfVerbose("\nConnecting to ZooKeeper at " + zkHost + " ...", cli);
String znode = cli.getOptionValue("path");
diff --git a/solr/core/src/java/org/apache/solr/cli/ZkMvTool.java b/solr/core/src/java/org/apache/solr/cli/ZkMvTool.java
index e9a8a3b..aab5741 100644
--- a/solr/core/src/java/org/apache/solr/cli/ZkMvTool.java
+++ b/solr/core/src/java/org/apache/solr/cli/ZkMvTool.java
@@ -20,11 +20,9 @@
import java.lang.invoke.MethodHandles;
import java.util.List;
import java.util.Locale;
-import java.util.concurrent.TimeUnit;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.SolrZkClientTimeout;
import org.apache.solr.common.cloud.SolrZkClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -70,18 +68,8 @@
public void runImpl(CommandLine cli) throws Exception {
SolrCLI.raiseLogLevelUnlessVerbose(cli);
String zkHost = SolrCLI.getZkHost(cli);
- if (zkHost == null) {
- throw new IllegalStateException(
- "Solr at "
- + cli.getOptionValue("solrUrl")
- + " is running in standalone server mode, downconfig can only be used when running in SolrCloud mode.\n");
- }
- try (SolrZkClient zkClient =
- new SolrZkClient.Builder()
- .withUrl(zkHost)
- .withTimeout(SolrZkClientTimeout.DEFAULT_ZK_CLIENT_TIMEOUT, TimeUnit.MILLISECONDS)
- .build()) {
+ try (SolrZkClient zkClient = SolrCLI.getSolrZkClient(cli, zkHost)) {
echoIfVerbose("\nConnecting to ZooKeeper at " + zkHost + " ...", cli);
String src = cli.getOptionValue("src");
String dst = cli.getOptionValue("dst");
diff --git a/solr/core/src/java/org/apache/solr/cli/ZkRmTool.java b/solr/core/src/java/org/apache/solr/cli/ZkRmTool.java
index 81aafbc..1be8c64 100644
--- a/solr/core/src/java/org/apache/solr/cli/ZkRmTool.java
+++ b/solr/core/src/java/org/apache/solr/cli/ZkRmTool.java
@@ -20,11 +20,9 @@
import java.lang.invoke.MethodHandles;
import java.util.List;
import java.util.Locale;
-import java.util.concurrent.TimeUnit;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.SolrZkClientTimeout;
import org.apache.solr.common.cloud.SolrZkClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -66,12 +64,6 @@
SolrCLI.raiseLogLevelUnlessVerbose(cli);
String zkHost = SolrCLI.getZkHost(cli);
- if (zkHost == null) {
- throw new IllegalStateException(
- "Solr at "
- + cli.getOptionValue("zkHost")
- + " is running in standalone server mode, 'zk rm' can only be used when running in SolrCloud mode.\n");
- }
String target = cli.getOptionValue("path");
boolean recurse = Boolean.parseBoolean(cli.getOptionValue("recurse"));
@@ -83,11 +75,7 @@
throw new SolrServerException("You may not remove the root ZK node ('/')!");
}
echoIfVerbose("\nConnecting to ZooKeeper at " + zkHost + " ...", cli);
- try (SolrZkClient zkClient =
- new SolrZkClient.Builder()
- .withUrl(zkHost)
- .withTimeout(SolrZkClientTimeout.DEFAULT_ZK_CLIENT_TIMEOUT, TimeUnit.MILLISECONDS)
- .build()) {
+ try (SolrZkClient zkClient = SolrCLI.getSolrZkClient(cli, zkHost)) {
if (!recurse && zkClient.getChildren(znode, null, true).size() != 0) {
throw new SolrServerException(
"ZooKeeper node " + znode + " has children and recurse has NOT been specified.");
diff --git a/solr/core/src/test/org/apache/solr/cloud/SolrCLIZkUtilsTest.java b/solr/core/src/test/org/apache/solr/cloud/SolrCLIZkUtilsTest.java
index 38f6a67..f7a8da2 100644
--- a/solr/core/src/test/org/apache/solr/cloud/SolrCLIZkUtilsTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/SolrCLIZkUtilsTest.java
@@ -60,6 +60,7 @@
.withUrl(zkAddr)
.withTimeout(30000, TimeUnit.MILLISECONDS)
.build();
+ System.setProperty("solr.solr.home", TEST_HOME());
}
@AfterClass