You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Yonik Seeley (JIRA)" <ji...@apache.org> on 2015/09/03 17:53:45 UTC

[jira] [Comment Edited] (SOLR-7990) timeAllowed is returning wrong results on the same query submitted with different timeAllowed limits

    [ https://issues.apache.org/jira/browse/SOLR-7990?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14729300#comment-14729300 ] 

Yonik Seeley edited comment on SOLR-7990 at 9/3/15 3:52 PM:
------------------------------------------------------------

Here's a patch that should fix the filter issue.

The bad code was in getDocSetNC (I have since moved that code to DocSetUtil) that caught the exception and logged a warning but did nothing else.

Since we don't know the context that the DocSet will be used in, we can't catch the exception there.  It may be cached later.  It may even be negated - there are multiple places this can happen, such as a pure-negative filter query.  In that case, terminating early could result in matching documents that would otherwise have never matched!

Here's a simple match removing the exception swallow.

edit: this isn't a complete patch - I haven't run tests, and I don't know if this breaks other tests.


was (Author: yseeley@gmail.com):
Here's a patch that should fix the filter issue.

The bad code was in getDocSetNC (I have since moved that code to DocSetUtil) that caught the exception and logged a warning but did nothing else.

Since we don't know the context that the DocSet will be used in, we can't catch the exception there.  It may be cached later.  It may even be negated - there are multiple places this can happen, such as a pure-negative filter query.  In that case, terminating early could result in matching documents that would otherwise have never matched!

Here's a simple match removing the exception swallow.

> timeAllowed is returning wrong results on the same query submitted with different timeAllowed limits
> ----------------------------------------------------------------------------------------------------
>
>                 Key: SOLR-7990
>                 URL: https://issues.apache.org/jira/browse/SOLR-7990
>             Project: Solr
>          Issue Type: Bug
>    Affects Versions: 5.2.1, Trunk, 5.4
>            Reporter: Erick Erickson
>            Assignee: Erick Erickson
>         Attachments: SOLR-7990.patch, SOLR-7990.patch, SOLR-7990_filterFix.patch
>
>
> William Bell raised a question on the user's list. The scenario is
> > send a query that exceeds timeAllowed
> > send another identical query with larger timeAllowed that does NOT time out
> The results from the second query are not correct, they reflect the doc count from the first query.
> It apparently has to do with filter queries being inappropriately created and re-used. I've attached a test case that illustrates the problem.
> There are three tests here. 
> testFilterSimpleCase shows the problem.
> testCacheAssumptions is my hack at what I _think_ the states of the caches should be, but has a bunch of clutter so I'm Ignoring it for now. This should be un-ignored and testFilterSimpleCase removed when there's any fix proposed. The assumptions may not be correct though.
> testQueryResults shows what I think is a problem, the second call that does NOT exceed timeAllowed still reports partial results.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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