janhoy commented on code in PR #4683:
URL: https://github.com/apache/solr/pull/4683#discussion_r3683542706
##########
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:
Hmm, yea guess we have that as a coding convention, but not anything that is
enforced by precommit. Perhaps we should add it to AGENTS.md as a coding hint,
or is there a more formal way to declare such wishes to tooling including
intelliJ?
--
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]