Rework searchers to execute on a single reader #883
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The m3db index is composed of time based index blocks, each index block is a complete index for a particular time range. Each index block is composed of segments (from writes and/or bootstraps). m3ninx's searcher implementation assumed these segments did not share document ID ranges (by ID, I mean postings.ID; not []byte). This guarantee isn't possible with m3db, because we accept writes before we bootstrap (or after, in the case of topology changes). This PR relaxes the restriction -- it makes the query searchers operate on a segment at a time, instead of all the segments at once. This will work out better for query optimisation too.
Fixes one of the issues in #865