A bug in the SegmentsInfoRequestHandler (aka: /admin/segments - which is used under the covers when viewing the "Segments Info" panel of a core in the Admin UI) causes it to increment the internal "ref-count" of the IndexWriter by default, with out ever decrementing that ref-count.
This can cause delayed problems in any situation where the IndexWriter needs updated/replaced/locked:
- Core RELOAD operations
- Master/Slave replication (via IndexFetcher)
- PULL Replica updates (via IndexFetcher)
- TLOG Replica updates (via IndexFetcher)
- NRT Recovery from Leader (via IndexFetcher)
...these manifest as operations that "stall" due to the threads attempting to execute them blocking forever waiting for a ReentrantReadWriteLock in DefaultSolrCoreState that will never be released.
A config only workaround exists for this problem, by explicitly declaring the /admin/segments handler in solrconfig.xml with an invariants param that requests additional info, forcing it down a code path where it uses the IndexWriter, and decrements the ref-count, releasing the lock.
Example stack traces of what this can look like