dsmiley commented on code in PR #2417: URL: https://github.com/apache/solr/pull/2417#discussion_r1581151423
########## 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: Sigh... I don't really like it. If it's only for the CLI case, which is what this JIRA issue here is about, We can do ClassLoader tricks to ensure the JARs are loaded from this classLoader and with priority over the parent boot one, then we load the "real" CLI class to do whatever CLI command is needed via this class loader. I could expand on this proposal more if asked. If the scope is broader, if there's an issue with Solr nodes not being able to load some SolrJ level plugins provided by a Module, seems like a separate issue. I don't think "Refactor" would be in the title. -- 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