Short-circuit single slice searches in ContextIndexSearcher #111126
Closed
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.
Even with the recent Lucene improvements in
apache/lucene#13472 there is no need to go through all the Lucene machinery for a single slice here. The task executor allocates a bunch of objects and runs into some memory barriers that the JVM can't necessarily compile away. Let's save that overhead for the single slice case and get some of that Lucene 9.12.0 fork-saving behaviour right away. (I am aware this changes the load distribution across search and search_worker a little, but I think it's irrelevant practically because forking and joining a task will probably as expensive as executing it outright in a lot of cases anyway)
Also this PR removes the pointless list of collectors that we were building.
Lastly, a neat side-effect of this change is that it makes whether or not forking has happened a little easier to spot in profiling in the current ES version.