[ https://issues.apache.org/jira/browse/SOLR-647?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Yonik Seeley updated SOLR-647: ------------------------------ Attachment: refcount_example.patch It seems like some simplifications could be made... see attached refcount_example.patch. I think we need to be able to describe in simple terms how the mechanism works: Cores are created with a reference count of 1 and put in multicore. As long as a core can be obtained from the map, it will have at least a reference count of 1. Thus, if we increment the core's reference during a time when we know that no other core is modifying multicore, we know we have a core that is safe from being asynchronously closed. To destroy a core, simply remove it from the map and call close on it. There are other issues that are still a bit muddled IMO... like the whole role of CoreDescriptor. > Do SolrCore.close() in a refcounted way > --------------------------------------- > > Key: SOLR-647 > URL: https://issues.apache.org/jira/browse/SOLR-647 > Project: Solr > Issue Type: Bug > Affects Versions: 1.3 > Reporter: Noble Paul > Assignee: Grant Ingersoll > Fix For: 1.3 > > Attachments: refcount_example.patch, solr-647.patch, solr-647.patch, > solr-647.patch, solr-647.patch, solr-647.patch, SOLR-647.patch, SOLR-647.patch > > > The method _SolrCore.close()_ directly closes the core . It can cause > Exceptions for in-flight requests. The _close()_ method should just do a > decrement on refcount and the actual close must happen when the last request > being processed by that core instance is completed -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.