[ 
https://issues.apache.org/jira/browse/SOLR-2927?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14195270#comment-14195270
 ] 

Cyrille Roy commented on SOLR-2927:
-----------------------------------

hi [~shalinmangar],
this is great news.
I have some of the mbeans leaking in the attached mbean-jira-leaked.png that I 
have attached.
Also, I have been able to fix the leak with the SOLR-2927.patch attached.
Do you still see the leaking mbeans after applying the patch ?

The issue is a race condition.
when opening a core, solr is preventing searchers from firing by starting a 
thread that blocks in a single threaded executor at line 783:
searcherExecutor.submit(new Callable() {
@Override
public Object call() throws Exception {
latch.await();
return null;
}
});

Other events are queued using the thread executor line 864 when calling the 
getSearcher(false, false, null, true) method

on exception, the latch is released, so searcher threads can fire and write 
things in the mbean using the infoRegistry map.
} catch (Throwable e) {
latch.countDown();//release the latch, otherwise we block trying to do the 
close. This should be fine, since counting down on a latch of 0 is still fine
//close down the searcher and any other resources, if it exists, as this is not 
recoverable
close();

And indeed it is what is happening in close()

we clean the mbean at line 990
try {
infoRegistry.clear();
} catch (Throwable e) {
SolrException.log(log, e);
}

and then wait for searcher thread completion at line 1070
try {
ExecutorUtil.shutdownAndAwaitTermination(searcherExecutor);
} catch (Throwable e) {
SolrException.log(log, e);
}

putting this before the registry clean actually solves the issue.

> SolrIndexSearcher's register do not match close and SolrCore's closeSearcher
> ----------------------------------------------------------------------------
>
>                 Key: SOLR-2927
>                 URL: https://issues.apache.org/jira/browse/SOLR-2927
>             Project: Solr
>          Issue Type: Bug
>          Components: search
>    Affects Versions: 4.0-ALPHA
>         Environment: JDK1.6/CentOS
>            Reporter: tom liu
>            Assignee: Shalin Shekhar Mangar
>             Fix For: 4.9, Trunk
>
>         Attachments: SOLR-2927.patch, mbean-leak-jira.png
>
>
> # SolrIndexSearcher's register method put the name of searcher, but 
> SolrCore's closeSearcher method remove name of currentSearcher on 
> infoRegistry.
> # SolrIndexSearcher's register method put the name of cache, but 
> SolrIndexSearcher's close do not remove the name of cache.
> so, there maybe lost some memory leak.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to