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

Fixed merge logic for multiple shards case #877

Conversation

martin-gaievski
Copy link
Member

Description

Fix for scenario in hybrid query search when:

  • concurrent segment search is enabled
  • one of the shards does not have any results
  • such shard appeared first in the sequence of multiple "merge shards results" calls

It's a gap in existing code, we only handle scenarios when merged result object is not empty and we're merging it with an empty result object.

The issue isn't trivial to repro because the sequence in which segment/shard results are passed to a merger isn't guaranteed, and we need to ingest documents and run search multiple times. Credit for providing a tool to replicate the issue goes to @eemmiirr, I used his script https://github.com/eemmiirr/opensearch-concurrent-segment-search-bug.

Related Issues

Resolves #875

Check List

  • New functionality includes testing.
  • New functionality has been documented.
  • API changes companion pull request created.
  • Commits are signed per the DCO using --signoff.
  • Public documentation issue/PR created.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Copy link
Member

@vibrantvarun vibrantvarun left a comment

Choose a reason for hiding this comment

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

Great Job in fixing it @martin-gaievski . LGTM.

@martin-gaievski martin-gaievski changed the base branch from fix_merge_logic_for_empty_shard_results to main September 4, 2024 19:05
Signed-off-by: Martin Gaievski <[email protected]>
@martin-gaievski martin-gaievski merged commit 3a6bdc7 into opensearch-project:main Sep 4, 2024
37 checks passed
opensearch-trigger-bot bot pushed a commit that referenced this pull request Sep 4, 2024
* Fixed merge logic for multiple shards case

Signed-off-by: Martin Gaievski <[email protected]>
(cherry picked from commit 3a6bdc7)
opensearch-trigger-bot bot pushed a commit that referenced this pull request Sep 4, 2024
* Fixed merge logic for multiple shards case

Signed-off-by: Martin Gaievski <[email protected]>
(cherry picked from commit 3a6bdc7)
martin-gaievski added a commit that referenced this pull request Sep 4, 2024
* Fixed merge logic for multiple shards case

Signed-off-by: Martin Gaievski <[email protected]>
(cherry picked from commit 3a6bdc7)

Co-authored-by: Martin Gaievski <[email protected]>
martin-gaievski added a commit that referenced this pull request Sep 4, 2024
* Fixed merge logic for multiple shards case

Signed-off-by: Martin Gaievski <[email protected]>
(cherry picked from commit 3a6bdc7)

Co-authored-by: Martin Gaievski <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport 2.x Label will add auto workflow to backport PR to 2.x branch backport 2.17 bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[BUG] Unable to merge results from shards
4 participants