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

Michael McCandless commented on LUCENE-6113:
--------------------------------------------

I agree this is a hassle, but I think it'd be dangerous to accept null in 
release and ignore it?  It could mask a real bug (reader ref count leak) in the 
application.

We could simple drop the assert: the app will see NPE which should be self 
explanatory.

> ReferenceManager.release uses assertion to expect argument not null, also 
> expects argument to be not null
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: LUCENE-6113
>                 URL: https://issues.apache.org/jira/browse/LUCENE-6113
>             Project: Lucene - Core
>          Issue Type: Bug
>    Affects Versions: 4.10.1
>            Reporter: ryan rawson
>
> A common use pattern for the Reference Manager looks like so:
> {code}
> IndexSearcher searcher = null;
> try {
>     searcher = searcherManager.acquire();
>     // do real work
> } finally {
>    searcherManager.release(searcher);
> }
> {code}
> The problem with this code is if 'acquire' throws an exception, the finally 
> block is called with a null reference for 'searcher'.  There are two issues, 
> one is this call release() uses assertion to check for argument validity, 
> which is not recommended 
> (http://docs.oracle.com/javase/8/docs/technotes/guides/language/assert.html) 
> and secondly to fix this, we need to guard all calls to release with an if 
> clause.
> Why not have release() be a noop if it is passed null, instead of triggering 
> an NPE?  It would support this API usage pattern w/o any changes on the 
> behalf of users.
> Looking at the code, it appears that it is very unlikely that the acquire() 
> call throws an exception. 



--
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