HoustonPutman commented on code in PR #3411: URL: https://github.com/apache/solr/pull/3411#discussion_r2191062828
########## solr/cross-dc-manager/src/java/org/apache/solr/crossdc/manager/consumer/KafkaCrossDcConsumer.java: ########## @@ -95,6 +98,59 @@ public class KafkaCrossDcConsumer extends Consumer.CrossDcConsumer { private final BlockingQueue<Runnable> queue = new BlockingQueue<>(10); + public static class SolrClientSupplier implements Supplier<CloudSolrClient>, AutoCloseable { + private final AtomicReference<CloudSolrClient> solrClientRef = new AtomicReference<>(); + private final String zkConnectString; + + public SolrClientSupplier(String zkConnectString) { + this.zkConnectString = zkConnectString; + } + + @Override + public void close() { + IOUtils.closeQuietly(solrClientRef.get()); + } + + protected CloudSolrClient createSolrClient() { + log.info("-- creating new SolrClient..."); + return new CloudSolrClient.Builder( + Collections.singletonList(zkConnectString), Optional.empty()) + .build(); + } + + @Override + public CloudSolrClient get() { + CloudSolrClient existingClient = solrClientRef.get(); + if (existingClient == null) { + synchronized (solrClientRef) { + if (solrClientRef.get() == null) { + log.info("- initializing Solr client"); + solrClientRef.set(createSolrClient()); + } + return solrClientRef.get(); + } + } + if (existingClient.getClusterStateProvider().isClosed()) { + // lock out other threads and re-open the client if its ClusterStateProvider was closed + synchronized (solrClientRef) { + // refresh and check again + existingClient = solrClientRef.get(); + if (existingClient.getClusterStateProvider().isClosed()) { + log.info("- re-creating Solr client because its CSP was closed"); Review Comment: This applies to all added log lines. ########## solr/cross-dc-manager/src/java/org/apache/solr/crossdc/manager/consumer/KafkaCrossDcConsumer.java: ########## @@ -95,6 +98,59 @@ public class KafkaCrossDcConsumer extends Consumer.CrossDcConsumer { private final BlockingQueue<Runnable> queue = new BlockingQueue<>(10); + public static class SolrClientSupplier implements Supplier<CloudSolrClient>, AutoCloseable { + private final AtomicReference<CloudSolrClient> solrClientRef = new AtomicReference<>(); + private final String zkConnectString; + + public SolrClientSupplier(String zkConnectString) { + this.zkConnectString = zkConnectString; + } + + @Override + public void close() { + IOUtils.closeQuietly(solrClientRef.get()); + } + + protected CloudSolrClient createSolrClient() { + log.info("-- creating new SolrClient..."); + return new CloudSolrClient.Builder( + Collections.singletonList(zkConnectString), Optional.empty()) + .build(); + } + + @Override + public CloudSolrClient get() { + CloudSolrClient existingClient = solrClientRef.get(); + if (existingClient == null) { + synchronized (solrClientRef) { + if (solrClientRef.get() == null) { + log.info("- initializing Solr client"); + solrClientRef.set(createSolrClient()); + } + return solrClientRef.get(); + } + } + if (existingClient.getClusterStateProvider().isClosed()) { + // lock out other threads and re-open the client if its ClusterStateProvider was closed + synchronized (solrClientRef) { + // refresh and check again + existingClient = solrClientRef.get(); + if (existingClient.getClusterStateProvider().isClosed()) { + log.info("- re-creating Solr client because its CSP was closed"); Review Comment: Can we make more normal log messages without `-`s and not abbreviating things like "CSP"? -- 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