You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ranger.apache.org by "Mehul Parikh (Jira)" <ji...@apache.org> on 2023/05/25 15:07:00 UTC

[jira] [Resolved] (RANGER-3947) Thread leak because of retry loop in SolrCollectionBootstrapper

     [ https://issues.apache.org/jira/browse/RANGER-3947?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mehul Parikh resolved RANGER-3947.
----------------------------------
    Resolution: Fixed

Thanks for the patch [~sandeep.sai] 

> Thread leak because of retry loop in SolrCollectionBootstrapper
> ---------------------------------------------------------------
>
>                 Key: RANGER-3947
>                 URL: https://issues.apache.org/jira/browse/RANGER-3947
>             Project: Ranger
>          Issue Type: Bug
>          Components: admin
>    Affects Versions: 2.3.0
>            Reporter: Sai Sandeep
>            Priority: Major
>
> SolrCollectionBootstrapper Tries to connect to solr cloud and tries upload ranger_audits config and create ranger_audits collection in a loop. We found that in our case uploadConfiguration keeps on failing and because of that is stuck in retry loop.
> but because of that it calls connect in a loop which creates new solr cloud client every time. but this solr cloud client is never closed so related connection pools and zk connections are also never closed. because of this number of threads keeps increasing until it crashes. 
> Related code:
> {code:java}
> while (!is_completed && (max_retry == TRY_UNTIL_SUCCESS || retry_counter < max_retry)) {
>     try {
>         if (connect(zookeeperHosts)) {
>             if (solr_cloud_mode) {
>                 if (uploadConfiguration() && createCollection()
>                                                             ) {
>                     is_completed = true;
>                     break;
>                 } else {
>                     logErrorMessageAndWait(
>                             "Error while performing operations on solr. ",
>                             null);
>                 }
>             }        } else {
>             logErrorMessageAndWait(
>                     "Cannot connect to solr kindly check the solr related configs. ",
>                     null);
>         }
>     } catch (Exception ex) {
>         logErrorMessageAndWait("Error while configuring solr. ", ex);
>     }
> }{code}
> {code:java}
> private boolean connect(List<String> zookeeperHosts) {
>     try {
>         logger.info("Solr is in Cloud mode");
>         if (isKERBEROS) {
>             setHttpClientBuilderForKrb();
>         }
>         solrCloudClient = new CloudSolrClient.Builder(zookeeperHosts,
>                 Optional.empty()).build();
>         solrCloudClient.setDefaultCollection(solr_collection_name);
>         solrCloudClient.connect();
>         zkClient = solrCloudClient.getZkStateReader().getZkClient();
>         solrClient = solrCloudClient;
>         solr_cloud_mode = true;        return true;
>     } catch (Exception ex) {
>         logger.severe("Can't connect to Solr server. ZooKeepers="
>                 + zookeeperHosts + ", collection=" + solr_collection_name
>                 + ex);
>         return false;
>     }
> } {code}
> I think if we close the solrCloudClient in the loop then it should fix the bug 
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)