epugh commented on code in PR #4683:
URL: https://github.com/apache/solr/pull/4683#discussion_r3683553572
##########
solr/core/src/java/org/apache/solr/cli/CLIUtils.java:
##########
@@ -233,34 +233,42 @@ public static String normalizeSolrUrl(CommandLine cli)
throws Exception {
"Neither --solr-connection, --zk-host or --solr-url parameters,
nor SOLR_CONNECTION, ZK_HOST env var provided, so assuming solr url is "
+ solrUrl
+ ".");
- } else if (!solrConnection.isZookeeper()) {
- // HTTP form (e.g. `-s http://host:port`): the connection string
already names a Solr URL,
- // so use it directly without spinning up a CloudSolrClient.
- solrUrl = normalizeSolrUrl(solrConnection.quorumItems().get(0), false);
} else {
- var builder =
- new HttpJettySolrClient.Builder()
- .withOptionalBasicAuthCredentials(
- cli.getOptionValue(CommonCLIOptions.CREDENTIALS_OPTION));
- try (CloudSolrClient cloudSolrClient =
getCloudSolrClient(solrConnection, builder)) {
- Set<String> liveNodes =
cloudSolrClient.getClusterState().getLiveNodes();
- if (liveNodes.isEmpty())
- throw new IllegalStateException(
- "No live nodes found! Cannot determine 'solrUrl' from
SolrCloud: "
- + solrConnection);
-
- String firstLiveNode = liveNodes.iterator().next();
- String urlScheme =
-
cloudSolrClient.getClusterStateProvider().getClusterProperty("urlScheme",
"http");
- solrUrl = URLUtil.getBaseUrlForNodeName(firstLiveNode, urlScheme,
false);
- solrUrl = normalizeSolrUrl(solrUrl, false);
- }
+ solrUrl =
+ solrUrlFromConnection(
+ solrConnection,
cli.getOptionValue(CommonCLIOptions.CREDENTIALS_OPTION));
}
}
solrUrl = normalizeSolrUrl(solrUrl);
return solrUrl;
}
+ /**
+ * Resolves a base Solr URL from a parsed connection. The HTTP form (e.g.
{@code -s
+ * http://host:port}) already names a Solr URL, so it is used directly
without spinning up a
+ * CloudSolrClient; the ZooKeeper form queries the cluster for a live node's
base URL.
+ */
+ public static String solrUrlFromConnection(
+ CloudSolrClient.CloudSolrClientConnection solrConnection, String
credentials)
+ throws Exception {
+ if (!solrConnection.isZookeeper()) {
+ return normalizeSolrUrl(solrConnection.quorumItems().get(0), false);
+ }
+ var builder = new
HttpJettySolrClient.Builder().withOptionalBasicAuthCredentials(credentials);
+ try (CloudSolrClient cloudSolrClient = getCloudSolrClient(solrConnection,
builder)) {
+ Set<String> liveNodes = cloudSolrClient.getClusterState().getLiveNodes();
+ if (liveNodes.isEmpty())
Review Comment:
so, if we do this, is't it part of our coding standards and our precheck..
which means we should make the change ONE time across the code base and do that
thing where git blame skips that one commit?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]