Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-10431

AssertionError in BooleanQuery.hashCode()

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 8.11.1
    • None
    • None
    • None
    • New

    Description

      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:

      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)
      
      

      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

      Attachments

        Activity

          People

            Unassigned Unassigned
            mbien Michael Bien
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 1h 40m
                1h 40m