[
https://issues.apache.org/jira/browse/SOLR-3699?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13445009#comment-13445009
]
Hoss Man commented on SOLR-3699:
--------------------------------
bq. the setDirFactory method seems a little troubling - why do we do that
instead of making it part of the constructor? What if you don't set it?
Are you asking about SolrIndexWriter.setDirectoryFactory ?
it's private, and called from the (static) SolrIndexWriter.create -- which as
of this patch is the only way to get a new SolrIndexWRiter.
I had to move it out of the SolrIndexWriter constructor, because we need to be
able to pass the resulting directory to super() while also releasing the
directory if the constructor throws an exception -- this isn't possible within
java's "calls to super(...) must be the first line of the constructor"
constraints, so the static factory method was needed instead.
bq. The dir factory should and will be closed by the DefaultSolrCoreState when
it's ref count hits 0 - you don't actually want to close it when closing a core.
But the update handler is the only thing keeping track of the SolrCoreState --
if the SolrCore has no UpdateHanlder (ie: because it failed to initialize) then
*something* needs to close the DirectoryFactory that
SolrCore.initDirectoryFactory() already created.
(Go ahead and try to comment out that "HACK" directoryFactory.close() in the
patch -- you'll see TestBadConfig.testUpdateLogButNoVersionField start failing.
I added that call to ensure that the DirectoryFactory gets closed if any
exceptions are thrown between a (successsful) call to initDirectoryFactory()
~L641 of SolrCore and (a success of failure of) createUpdateHandler() ~L707.
Don't get me wrong, it definitely feels like a hack (hence the comment) but
_something_ needs to account for this situation -- and i wasn't comfortably
completely re-writing/re-ordering the logic in the SolrCore constructor.
> SolrIndexWriter constructor leaks Directory if Exception creating
> IndexWriterConfig
> -----------------------------------------------------------------------------------
>
> Key: SOLR-3699
> URL: https://issues.apache.org/jira/browse/SOLR-3699
> Project: Solr
> Issue Type: Bug
> Reporter: Robert Muir
> Assignee: Mark Miller
> Fix For: 4.0
>
> Attachments: SOLR-3699.patch, SOLR-3699.patch, SOLR-3699.patch,
> SOLR-3699.patch
>
>
> in LUCENE-4278 i had to add a hack to force SimpleFSDir for
> CoreContainerCoreInitFailuresTest, because it doesnt close its Directory on
> certain errors.
> This might indicate a problem that leaks happen if certain errors happen
> (e.g. not handled in finally)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]