You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by "Michael Bien (Jira)" <ji...@apache.org> on 2022/02/22 09:25:00 UTC

[jira] [Created] (LUCENE-10431) AssertionError in BooleanQuery.hashCode()

Michael Bien created LUCENE-10431:
-------------------------------------

             Summary: AssertionError in BooleanQuery.hashCode()
                 Key: LUCENE-10431
                 URL: https://issues.apache.org/jira/browse/LUCENE-10431
             Project: Lucene - Core
          Issue Type: Bug
    Affects Versions: 8.11.1
            Reporter: Michael Bien


Hello devs,

the constructor of BooleanQuery can under some circumstances trigger a hash code computation before "clauseSets" is fully filled. Since BooleanClause is using its query field for the hash code too, it can happen that the "wrong" hash code is stored, since adding the clause to the set triggers its hashCode().

If assertions are enabled the check in BooleanQuery, which recomputes the hash code, will notice it and throw an error.

exception:
{code:java}
java.lang.AssertionError
    at org.apache.lucene.search.BooleanQuery.hashCode(BooleanQuery.java:614)
    at java.base/java.util.Objects.hashCode(Objects.java:103)
    at java.base/java.util.HashMap$Node.hashCode(HashMap.java:298)
    at java.base/java.util.AbstractMap.hashCode(AbstractMap.java:527)
    at org.apache.lucene.search.Multiset.hashCode(Multiset.java:119)
    at java.base/java.util.EnumMap.entryHashCode(EnumMap.java:717)
    at java.base/java.util.EnumMap.hashCode(EnumMap.java:709)
    at java.base/java.util.Arrays.hashCode(Arrays.java:4498)
    at java.base/java.util.Objects.hash(Objects.java:133)
    at org.apache.lucene.search.BooleanQuery.computeHashCode(BooleanQuery.java:597)
    at org.apache.lucene.search.BooleanQuery.hashCode(BooleanQuery.java:611)
    at java.base/java.util.HashMap.hash(HashMap.java:340)
    at java.base/java.util.HashMap.put(HashMap.java:612)
    at org.apache.lucene.search.Multiset.add(Multiset.java:82)
    at org.apache.lucene.search.BooleanQuery.<init>(BooleanQuery.java:154)
    at org.apache.lucene.search.BooleanQuery.<init>(BooleanQuery.java:42)
    at org.apache.lucene.search.BooleanQuery$Builder.build(BooleanQuery.java:133)

{code}

I noticed this while trying to upgrade the NetBeans maven indexer modules from lucene 5.x to 8.x https://github.com/apache/netbeans/pull/3558



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

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