[ 
https://issues.apache.org/jira/browse/LUCENE-6369?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Adrien Grand updated LUCENE-6369:
---------------------------------
    Attachment: LUCENE-6369.patch

Here is a patch:
 - queries wrapping Term instances (TermQuery, PhraseQuery, MultiPhraseQuery, 
CommonTermsQuery) now perform a defensive copy of the provided term
 - mutable queries (BooleanQuery, ConstantScoreQuery, DisjunctionMaxQuery, 
FilteredQuery, ...) now clone deeply
 - filters (QueryWrapperFilter and some test impls) implement 
equals/hashcode/clone as expected
 - added eviction error detection to the query cache and made the test query 
cache smaller so that having evictions running is more likely

When merging to 5.x I would add migration notes to explain that custom filters 
need to implement equals/hashcode/clone correctly now that Filter extends Query.

> Make queries more defensive and clone deeply
> --------------------------------------------
>
>                 Key: LUCENE-6369
>                 URL: https://issues.apache.org/jira/browse/LUCENE-6369
>             Project: Lucene - Core
>          Issue Type: Bug
>            Reporter: Adrien Grand
>            Assignee: Adrien Grand
>             Fix For: 5.1
>
>         Attachments: LUCENE-6369.patch
>
>
> It is very important for the query cache that queries be either immutable or 
> clone deeply so that they cannot change after having been put into the cache.
> There are three issues that need to be addressed:
>  - mutable queries such as boolean or phrase queries do not clone deeply
>  - queries that wrap mutable objects such as TermQuery's term
>  - filters inherit Query's default clone impl which is not enough in most 
> cases



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