lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andreas Kohn (JIRA)" <j...@apache.org>
Subject [jira] Commented: (LUCENE-1431) NullPointerException in CloseableThreadLocal#get() if CTL is closed
Date Thu, 30 Oct 2008 10:11:44 GMT

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

Andreas Kohn commented on LUCENE-1431:
--------------------------------------

Continueing reading application and lucene code, the patch will only move the NPE to a few
lines later when TermInfosReaders#getThreadResources() tries to call CloseableThreadLocal#set()
with the newly created resources.

A bit more context on the application where I hit this problem:
This is a web application that runs a periodic update check that will create new readers on
a newer indices (no reopen, real creation of the readers), and close the older ones. Requests
will get the currently open reader, and generally handle the case where this gets closed by
catching the exceptions and doing "something sensible".
The exception is hit in a place that is implementing a Filter, and expects an IOException
if the reader is closed by chance.
With lucene 2.3.2, this worked nicely, but with 2.4.0 we get the above exception, instead
of the expected IOException.

I see that there is now IndexReader#incRef() and IndexReader#decRef(), so I'll play with those
methods to prevent "early" closing of readers, and avoid handling the exceptions. 


The question still remains whether CloseableThreadLocal should somehow handle the 'closed'
state in get()/set(), or whether documentation should be added that close() really means nothing
else will work after that.


> NullPointerException in CloseableThreadLocal#get() if CTL is closed
> -------------------------------------------------------------------
>
>                 Key: LUCENE-1431
>                 URL: https://issues.apache.org/jira/browse/LUCENE-1431
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: Other
>    Affects Versions: 2.4
>         Environment: Linux Fedora 9, amd64, Sun JDK 1.6.0_03 amd64
>            Reporter: Andreas Kohn
>         Attachments: LUCENE-1431.diff
>
>
> Pretty simple NPE, happening because some thread closed the CloseableThreadLocal, but
another place still wanted to look at it:
> {noformat}
>  java.lang.NullPointerException
>      at org.apache.lucene.util.CloseableThreadLocal.get(Unknown Source)
>      at org.apache.lucene.index.TermInfosReader.getThreadResources(Unknown Source)
>      at org.apache.lucene.index.TermInfosReader.get(Unknown Source)
>      at org.apache.lucene.index.TermInfosReader.get(Unknown Source)
>      at org.apache.lucene.index.SegmentTermDocs.seek(Unknown Source)
>      at org.apache.lucene.index.MultiSegmentReader$MultiTermDocs.termDocs(Unknown Source)
>      at org.apache.lucene.index.MultiSegmentReader$MultiTermDocs.next(Unknown Source)
> {noformat}
> I believe the attached patch should fix those.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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


Mime
View raw message