Thanks Shawn & Vicenzo. Will check it out and change accordingly. Thanks again Shawn for your clear explanation.
Regards Reej On Tue, 29 Jun 2021 at 9:47 PM, Vincenzo D'Amore <v.dam...@gmail.com> wrote: > Right, you should always use CloudSolrClient as a singleton. > To be honest I'm used to reuse a CloudSolrClient instance for each > collection/index. > > On Tue, Jun 29, 2021 at 3:12 PM Shawn Heisey <apa...@elyograg.org> wrote: > > > On 6/29/2021 6:43 AM, Reej Nayagam wrote: > > > Hi Vincenzo Yes we are using cloud and initial solr version was 4.10.4 > > > and we upgraded the jars alone to 8.8.2 now in the application side > > > connecting to solr Server to fix some vulnerability. As we have > > > upgraded the jars we changed httpsolrserver connection to > > > httpsolrclient and we guess there is some connection leak and wanted > > > to check if we need to close it or it is being handled internally. > > > Singleton not sure if I can use as the base URL changes depending on > > > the leader. > > > > If you're running SolrCloud, you should be using CloudSolrClient, not > > HttpSolrClient. The cloud client talks to zookeeper, so it is always > > aware of the cluster state -- it will be aware of down servers and new > > servers, without recreating or reinitializing the client. And it will > > be aware of changes instantly -- because that information is coordinated > > in zookeeper. > > > > You can use a single client object for multiple collections. All of the > > methods that execute requests should have a version where you can pass > > it the name of the collection/core you want to operate on. For > > CloudSolrClient, you point it at all your ZK servers and it figures out > > the Solr server URLs from the clusterstate in ZK. For HttpSolrClient, > > you just leave the collection name off of the base URL -- > > "http://server.example.com:8983/solr" is an example URL. > > > > As was mentioned, you should create a client during program startup and > > then use it to handle all requests for the life of the program. It > > should manage connections and close them after receiving data, with no > > coding needed from the developer (you). If you close a SolrClient > > object, it will not function after that. If you're having connections > > stay open, then either you're running a Solr or SolrJ version with bugs, > > or there is something wrong with your networking. > > > > It shouldn't be necessary to ever close a SolrClient object, unless you > > create a new one every time your program talks to Solr. Which you > > shouldn't do. > > > > > > Thanks, > > Shawn > > > > > > -- > Vincenzo D'Amore > -- *Thanks,* *Reej*