[
https://issues.apache.org/jira/browse/LUCENE-1805?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12742830#action_12742830
]
Michael McCandless commented on LUCENE-1805:
--------------------------------------------
bq. If you call ctl.get() w/o setting anything first, it creates a
WeakReference and set the initValue(), which is ... null
I don't think that's right?
It calls initialValue(), and only if that returns a non-null value will it set
it. Else it doesn't call set? (So calling get() twice in a row not having
called set shouldn't hit an exception). I think?
> CloseableThreadLocal should allow null Objects
> ----------------------------------------------
>
> Key: LUCENE-1805
> URL: https://issues.apache.org/jira/browse/LUCENE-1805
> Project: Lucene - Java
> Issue Type: Bug
> Components: contrib/analyzers
> Affects Versions: 2.4.1
> Reporter: Shai Erera
> Fix For: 2.9
>
> Attachments: LUCENE-1805.patch
>
>
> CloseableThreadLocal does not allow null Objects in its get() method, but
> does nothing to prevent them in set(Object). The comment in get() before
> assert v != null is irrelevant - the application might have passed null.
> Null is an important value for Analyzers. Since tokenStreams (a ThreadLocal
> private member in Analyzer) is not accessible by extending classes, the only
> way for an Analyzer to reset the tokenStreams is by calling
> setPreviousTokenStream(null).
> I will post a patch w/ a test
--
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: [email protected]
For additional commands, e-mail: [email protected]