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 KoÌ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]