GitHub user tboeghk opened a pull request:

    https://github.com/apache/lucene-solr/pull/190

    [SOLR-10506] Fixes a memory leak in zk schema watching

    Upon manual Solr Collection reloading, references to the closed `SolrCore` 
are not fully removed by the garbage collector as a strong reference to the 
`ZkIndexSchemaReader` is held in a ZooKeeper `Watcher` that watches for schema 
changes.
    
    In our case, this leads to a massive memory leak as managed resources are 
still referenced by the closed `SolrCore`. Our Solr cloud environment utilizes 
rather large managed resources (synonyms, stopwords). To reproduce, we fired 
out environment up and reloaded the collection 13 times. As a result we fully 
exhausted our heap. A closer look with the Yourkit profiler revealed 13 
`SolrCore` instances, still holding strong references to the garbage collection 
root.
    
    Each `SolrCore` instance holds a single path with strong references to the 
gc root via a `Watcher` in `ZkIndexSchemaReader`. The `ZkIndexSchemaReader` 
registers a close hook in the `SolrCore` but the Zookeeper is not removed upon 
core close.
    
    We supplied this Github Pull Request that extracts the zookeeper `Watcher` 
as a static inner class. To eliminate the memory leak, the schema reader is 
held inside a `WeakReference` and the reference is explicitly removed on core 
close.
    
    Initially I wanted to supply a test case but unfortunately did not find a 
good starting point ...

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/shopping24/lucene-solr branch_6_5

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/lucene-solr/pull/190.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #190
    
----
commit 9a5abee7e9b431ba0c2e0d432dc33b1919fa4f40
Author: Torsten Bøgh Köster <[email protected]>
Date:   2017-04-18T09:43:52Z

    Fixes a memory leak in zk schema watching

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to