[
https://issues.apache.org/jira/browse/SOLR-5618?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Hoss Man updated SOLR-5618:
---------------------------
Attachment: SOLR-5618.patch
bq. So it seems pretty clear to me that something related to SOLR-5057 is
causing false cache hits – what isn't entirely clear to me yet is if the
functionality added in r1516299 is fundamentally flawed (and should be
reverted), or if it's just exposing some less obvious problem with the
hashCode/equals methods of these specific query types.
Bug is definitely in the QueryResultKey.isEqual &
QueryResultKey.unorderedCompare method -- they ensure that fqList1 and fqList2
are the same size, and that every item from fqList1 exists in fqList2, but they
don't ensure that there is a 1-to-1 set equivalence between the lists -- So in
cases where fqList1 contains some query X duplicated N times, it only ensures
that X is in fqList2, but not that it's duplicated N times, so having some
other clauses which are not in fqList1 to keep the sizes the same causes false
positives.
Targeted test case attached ... i'll work on a more robust randomized test
tomorrow and see if i can figure out an efficinet fix, or if we should just
revert r1516299 completely.
> Reproducible failure from TestFiltering.testRandomFiltering
> -----------------------------------------------------------
>
> Key: SOLR-5618
> URL: https://issues.apache.org/jira/browse/SOLR-5618
> Project: Solr
> Issue Type: Bug
> Reporter: Hoss Man
> Attachments: SOLR-5618.patch, SOLR-5618.patch, SOLR-5618.patch,
> SOLR-5618.patch
>
>
> uwe's jenkins found this in java8...
> http://jenkins.thetaphi.de/job/Lucene-Solr-trunk-Linux/9004/consoleText
> {noformat}
> [junit4] 2> NOTE: reproduce with: ant test -Dtestcase=TestFiltering
> -Dtests.method=testRandomFiltering -Dtests.seed=C22042E80957AE3E
> -Dtests.multiplier=3 -Dtests.slow=true -Dtests.locale=ar_LY
> -Dtests.timezone=Asia/Katmandu -Dtests.file.encoding=UTF-8
> [junit4] FAILURE 16.9s J1 | TestFiltering.testRandomFiltering <<<
> [junit4] > Throwable #1: java.lang.AssertionError: FAILURE: iiter=11
> qiter=336 request=[q, {!frange v=val_i l=0 u=1 cost=139 tag=t}, fq, {!frange
> v=val_i l=0 u=1}, fq, {! cost=92}-_query_:"{!frange v=val_i l=1 u=1}", fq,
> {!frange v=val_i l=0 u=1 cache=true tag=t}, fq, {! cache=true
> tag=t}-_query_:"{!frange v=val_i l=1 u=1}"]
> [junit4] > at
> __randomizedtesting.SeedInfo.seed([C22042E80957AE3E:DD43E12DEC70EE37]:0)
> [junit4] > at
> org.apache.solr.search.TestFiltering.testRandomFiltering(TestFiltering.java:327)
> {noformat}
> The seed fails consistently for me on trunk using java7, and on 4x using both
> java7 and java6 - details to follow in comment.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]