BREAKING: Add cancellation support to IndexSearcher, #922 #1080
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.
Adds basic cancellation support to IndexSearcher.
Fixes #922
Description
This adds optional CancellationToken parameters to all
IndexSearcher.Search
andSearchAfter
methods, which is a breaking change to the API.If an executor is provided in the constructor for multithreaded search, then the provided CancellationToken is passed to the
Task.Wait(CancellationToken)
method. If an executor is not provided, then it will callThrowIfCancellationRequested()
in the synchronous case at the evaluation of each leaf reader context.This will not help cancellation for i.e. single-leaf reader contexts that might take a while to complete (that would require a much larger and messier change to add CancellationToken support to Scorer and ICollector, and benchmarking to ensure we don't hurt performance by doing so), but should at least help with many scenarios that require cancellation.
I wanted to publish this draft PR for feedback; please let me know if you like this direction or have concerns.