[
https://issues.apache.org/jira/browse/SOLR-17158?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17819319#comment-17819319
]
Andrzej Bialecki commented on SOLR-17158:
-----------------------------------------
Adding some observations from reading the code in {{{}SolrIndexSearcher}} and
{{HttpShardHandler}}.
It appears that currently when {{timeAllowed}} is reached it doesn’t cause
termination of all other pending shard requests. I found this section in
{{SolrIndexSearcher:284}}:
{{ try {}}
{{ super.search(query, collector);}}
{{ } catch (TimeLimitingCollector.TimeExceededException}}
{{ | ExitableDirectoryReader.ExitingReaderException}}
{{ | CancellableCollector.QueryCancelledException x) {}}
{{ log.warn("Query: [{}]; ", query, x);}}
{{ qr.setPartialResults(true);}}
In the case when it reaches {{timeAllowed}} limit (and our new {{QueryLimits}},
too) it simply sets {{partialResults=true}} and does NOT throw any exception,
so all the layers above think that the result is a success.
I suspect the reason for this was that when {{timeAllowed}} was set we still
wanted to retrieve partial results when the limit was hit, and throwing an
exception here would prevent that.
OTOH, if we had a request param saying “discard everything when you reach a
limit and cancel any ongoing requests” then we could throw an exception here,
and {{ShardHandler}} would recognize this as an error and cancel all other
shard requests that are still pending, so that replicas could avoid sending
back their results that would be discarded anyway.
> Terminate distributed processing quickly when query limit is reached
> --------------------------------------------------------------------
>
> Key: SOLR-17158
> URL: https://issues.apache.org/jira/browse/SOLR-17158
> Project: Solr
> Issue Type: Sub-task
> Components: Query Limits
> Reporter: Andrzej Bialecki
> Assignee: Gus Heck
> Priority: Major
>
> Solr should make sure that when query limits are reached and partial results
> are not needed (and not wanted) then both the processing in shards and in the
> query coordinator should be terminated as quickly as possible, and Solr
> should minimize wasted resources spent on eg. returning data from the
> remaining shards, merging responses in the coordinator, or returning any data
> back to the user.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]