Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cancel search on shard failure when partial results disallowed #63520

Merged
merged 3 commits into from
Oct 14, 2020

Conversation

dnhatn
Copy link
Member

@dnhatn dnhatn commented Oct 9, 2020

If the partial results parameter is false (which defaults to true), then we should cancel the search request when it hits a shard failure because the caller won't consume the partial results.

Closes #60278

@dnhatn dnhatn added >enhancement :Search/Search Search-related issues that do not fall into other categories v8.0.0 v7.11.0 labels Oct 9, 2020
@dnhatn dnhatn requested a review from jimczi October 9, 2020 15:20
@elasticmachine
Copy link
Collaborator

Pinging @elastic/es-search (:Search/Search)

@elasticmachine elasticmachine added the Team:Search Meta label for search team label Oct 9, 2020
Copy link
Contributor

@jimczi jimczi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left some minor comments but the change makes sense to me.

@dnhatn dnhatn requested a review from jimczi October 14, 2020 12:54
Copy link
Contributor

@jimczi jimczi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@dnhatn
Copy link
Member Author

dnhatn commented Oct 14, 2020

run elasticsearch-ci/2

@dnhatn
Copy link
Member Author

dnhatn commented Oct 14, 2020

Thanks Jim!

@dnhatn dnhatn merged commit 4ee18cd into elastic:master Oct 14, 2020
@dnhatn dnhatn deleted the cancel-search-on-failure branch October 14, 2020 16:13
dnhatn added a commit that referenced this pull request Oct 27, 2020
Since #63520, we will cancel a search that hits shard failures and does 
not accept partial results. However, that change can return the wrong
HTTP code for bad requests (from 4xx to 5xx) due to the cancellation.

Relates #63520
Closes #64012
Closes #63702
dnhatn added a commit that referenced this pull request Oct 28, 2020
The search request in the test can complete before the "cancelledLatch" 
is latched if the second shard request is sent after the request was
canceled (i.e., the child task is not allowed to start after the parent
was canceled).

Closes #63976
Relates ##63520
dnhatn added a commit that referenced this pull request Nov 10, 2020
If the partial results parameter is false (which defaults to true), then 
we should cancel the search request when it hits a shard failure because 
the caller won't consume the partial results.

Closes #60278
dnhatn added a commit that referenced this pull request Nov 10, 2020
Since #63520, we will cancel a search that hits shard failures and does 
not accept partial results. However, that change can return the wrong
HTTP code for bad requests (from 4xx to 5xx) due to the cancellation.

Relates #63520
Closes #64012
Closes #63702
dnhatn added a commit that referenced this pull request Nov 10, 2020
The search request in the test can complete before the "cancelledLatch" 
is latched if the second shard request is sent after the request was
canceled (i.e., the child task is not allowed to start after the parent
was canceled).

Closes #63976
Relates ##63520
jtibshirani added a commit that referenced this pull request Nov 24, 2020
In #63520, we started cancelling searches that encounter shard failures and
don't allow partial results. In this case we return an 'all shards failed'
response, since there are no successful responses.

This PR proposes to return a 'partial shards failure' instead. The reasoning:
it's misleading to claim that 'all shards failed' when we only know at least
one shard failed (and preemptively cancelled the rest).
jtibshirani added a commit to jtibshirani/elasticsearch that referenced this pull request Nov 24, 2020
In elastic#63520, we started cancelling searches that encounter shard failures and
don't allow partial results. In this case we return an 'all shards failed'
response, since there are no successful responses.

This PR proposes to return a 'partial shards failure' instead. The reasoning:
it's misleading to claim that 'all shards failed' when we only know at least
one shard failed (and preemptively cancelled the rest).
jtibshirani added a commit that referenced this pull request Nov 24, 2020
In #63520, we started cancelling searches that encounter shard failures and
don't allow partial results. In this case we return an 'all shards failed'
response, since there are no successful responses.

This PR proposes to return a 'partial shards failure' instead. The reasoning:
it's misleading to claim that 'all shards failed' when we only know at least
one shard failed (and preemptively cancelled the rest).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
>enhancement :Search/Search Search-related issues that do not fall into other categories Team:Search Meta label for search team v7.11.0 v8.0.0-alpha1
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Cancel queries on shard failures when partial results are not allowed
4 participants