laminelam commented on code in PR #2417: URL: https://github.com/apache/solr/pull/2417#discussion_r1583820695
########## solr/core/src/java/org/apache/solr/cli/SolrCLI.java: ########## @@ -607,6 +611,46 @@ public static String getZkHost(CommandLine cli) throws Exception { 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) + .withSolrClassLoader(getSolrResourceLoader()) + .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()) + .withSolrClassLoader(getSolrResourceLoader()) + .withInternalClientBuilder(builder) + .build(); + } + + private static SolrResourceLoader getSolrResourceLoader() { + String dir = System.getProperty("solr.solr.home"); + if (StrUtils.isNullOrEmpty(dir)) { + dir = System.getProperty("solr.install.dir"); + } + final SolrResourceLoader loader = new SolrResourceLoader(Paths.get(dir)); + NodeConfig.initModules(loader, null); Review Comment: @dsmiley Firstable, I really appreciate the time you're spending on this, and your inputs are very valuable. I thought of adding a custom loader for CLI code but didn't want to duplicate the existing code. Actually I already did it [here](https://github.com/apache/solr/pull/826/commits/b3f4f830986042e8f194fa84088752f93b3abba8#diff-27c02533050bbfcb97de03a7d7e33588bb547f7b46f7e86e09c36175a5ef85c5) but end up abandoning it. Will get rid of SRL as far as this PR is concerned (for the CLI part). Still, I don't see how we can access _modules_ classes from the client side ( **_solrj_**) without passing a SRL? -- 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: issues-unsubscr...@solr.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For additional commands, e-mail: issues-h...@solr.apache.org