[
https://issues.apache.org/jira/browse/LUCENE-6321?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14355810#comment-14355810
]
Adrien Grand commented on LUCENE-6321:
--------------------------------------
I started working on making queries immutable and while I like the change
conceptually, this has a big impact on the code base and makes eg. boolean
queries harder to use given how many parameters they have (minShouldMatch,
disableCoord, clauses) and how we expect them to work (and throw a
TooManyClausesException as soon as you added too many clauses). Maybe we can
still do it in the long term but I think making queries clone deeply would be a
pragmatic move in the mean time?
> Make oal.index.Term more defensive
> ----------------------------------
>
> Key: LUCENE-6321
> URL: https://issues.apache.org/jira/browse/LUCENE-6321
> Project: Lucene - Core
> Issue Type: Bug
> Reporter: Adrien Grand
> Assignee: Adrien Grand
> Priority: Minor
> Attachments: LUCENE-6321.patch, LUCENE-6321.patch
>
>
> oal.index.Term has a Term(String field, BytesRef termBytes) constructor. Even
> though it warns that the term bytes should not be reused, I'm wondering that
> we should make it more defensive.
> {noformat}
> * <p>WARNING: the provided BytesRef is not copied, but used directly.
> * Therefore the bytes should not be modified after construction, for
> * example, you should clone a copy by {@link BytesRef#deepCopyOf}
> * rather than pass reused bytes from a TermsEnum.
> {noformat}
> For example if you have term queries in your query cache and they are
> modified in-place, it would have very bad consequences and would be hard to
> diagnose.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]