Hi, Thanks for all this information. I am doing this now like following:
@Override public void inform(SolrCore core) { HttpSolrClient.Builder builder = new HttpSolrClient.Builder(); String baseURL = core.getCoreContainer().getZkController().getBaseUrl() + "/" + dataInfo.dataSource; builder.withBaseSolrUrl(baseURL); solrClient = builder.build(); core.addCloseHook(new CloseHook() { @Override public void preClose(SolrCore core) { //no cleanup needed before closing the core } @Override public void postClose(SolrCore core) { try { solrClient.close(); } catch (IOException e) { logger.error("Not able to close solr client after closing " + "Solr core '{}'", core.getName(), e); } } }); } On Fri, Sep 6, 2019 at 5:40 PM Arnold Bronley <arnoldbron...@gmail.com> wrote: > Hi Markus, > > "Depending on cloudMode we create new SolrClient instances based on these > classes. " > > But I still do not see SolrClient creation anywhere in your code snippet. > Am I missing something? I tried the solution with system properties and it > works but I would like to avoid that. > > On Thu, Sep 5, 2019 at 6:20 PM Markus Jelsma <markus.jel...@openindex.io> > wrote: > >> Hello Arnold, >> >> In the Factory's inform() method you receive a SolrCore reference. Using >> this you can get the CloudDescriptor and the ZkController references. These >> provide access to what you need to open a connection for SolrClient. >> >> Our plugins usually work in cloud and non-cloud environments, so we >> initialize different things for each situation. Like this abstracted in >> some CloudUtils thing: >> >> cloudDescriptor = core.getCoreDescriptor().getCloudDescriptor(); >> zk = core.getCoreContainer().getZkController(); // this is the >> ZkController ref >> coreName = core.getCoreDescriptor().getName(); >> >> // Are we in cloud mode? >> if (zk != null) { >> collectionName = core.getCoreDescriptor().getCollectionName(); >> shardId = cloudDescriptor.getShardId(); >> } else { >> collectionName = null; >> shardId = null; >> } >> >> Depending on cloudMode we create new SolrClient instances based on these >> classes. >> >> Check the apidocs and you'll quickly see what you need. >> >> We use these api's to get what we need. But you can also find these >> things if you check the Java system properties, which is easier. We use the >> api's to read the data because if api's change, we get a compile error. If >> the system properties change, we don't. So the system properties is easier, >> but the api's are safer. Although a unit tests should guard against that as >> well. >> >> Regards, >> Markus >> >> ps, on this list there is normally no need to create a new thread for an >> existing one, even if you are eagerly waiting for a reply. It might take >> some patience though. >> >> -----Original message----- >> > From:Arnold Bronley <arnoldbron...@gmail.com> >> > Sent: Thursday 5th September 2019 18:44 >> > To: solr-user@lucene.apache.org >> > Subject: Re: SolrClient from inside processAdd function >> > >> > Hi Markus, >> > >> > Is there any way to get the information about the current Solr endpoint >> > from within the custom URP? >> > >> > On Wed, Sep 4, 2019 at 3:10 PM Markus Jelsma < >> markus.jel...@openindex.io> >> > wrote: >> > >> > > Hello Arnold, >> > > >> > > Yes, we do this too for several cases. >> > > >> > > You can create the SolrClient in the Factory's inform() method, and >> pass >> > > is to the URP when it is created. You must implement SolrCoreAware and >> > > close the client when the core closes as well. Use a CloseHook for >> this. >> > > >> > > If you do not close the client, it will cause trouble if you run unit >> > > tests, and most certainly when you regularly reload cores. >> > > >> > > Regards, >> > > Markus >> > > >> > > >> > > >> > > -----Original message----- >> > > > From:Arnold Bronley <arnoldbron...@gmail.com> >> > > > Sent: Wednesday 4th September 2019 20:10 >> > > > To: solr-user@lucene.apache.org >> > > > Subject: Re: SolrClient from inside processAdd function >> > > > >> > > > I need to search some other collection inside processAdd function >> and >> > > > append that information to the indexing request. >> > > > >> > > > On Tue, Sep 3, 2019 at 7:55 PM Erick Erickson < >> erickerick...@gmail.com> >> > > > wrote: >> > > > >> > > > > This really sounds like an XY problem. What do you need the >> SolrClient >> > > > > _for_? I suspect there’s an easier way to do this….. >> > > > > >> > > > > Best, >> > > > > Erick >> > > > > >> > > > > > On Sep 3, 2019, at 6:17 PM, Arnold Bronley < >> arnoldbron...@gmail.com> >> > > > > wrote: >> > > > > > >> > > > > > Hi, >> > > > > > >> > > > > > Is there a way to create SolrClient from inside processAdd >> function >> > > for >> > > > > > custom update processor for the same Solr on which it is >> executing? >> > > > > >> > > > > >> > > > >> > > >> > >> >