Closed mikemccand closed 5 years ago
+1
[Legacy Jira: Uwe Schindler (@uschindler) on Jun 17 2019]
Commit 60f3b25d0600b1a1d3ea93f6f31d3bff02d041a9 in lucene-solr's branch refs/heads/master from Simon Willnauer https://gitbox.apache.org/repos/asf?p=lucene-solr.git;h=60f3b25
LUCENE-8865: Use incoming thread for execution if IndexSearcher has an executor (#725)
Today we don't utilize the incoming thread for a search when IndexSearcher has an executor. This thread is only idling but can be used to execute a search once all other collectors are dispatched.
[Legacy Jira: ASF subversion and git services on Jun 18 2019]
Commit 4165184b16027d5b66f3ad97806cf6e4425e466f in lucene-solr's branch refs/heads/branch_8x from Simon Willnauer https://gitbox.apache.org/repos/asf?p=lucene-solr.git;h=4165184
LUCENE-8865: Use incoming thread for execution if IndexSearcher has an executor (#725)
Today we don't utilize the incoming thread for a search when IndexSearcher has an executor. This thread is only idling but can be used to execute a search once all other collectors are dispatched.
[Legacy Jira: ASF subversion and git services on Jun 18 2019]
Commit c6899fc40d71fe6343f8d83c02641501aaaea049 in lucene-solr's branch refs/heads/master from Simon Willnauer https://gitbox.apache.org/repos/asf?p=lucene-solr.git;h=c6899fc
LUCENE-8865: Move to executor in IndexSearcher (#731)
In order to simplify testing this change moves to use the Executor interface instead of ExecutorService. This change also simplifies customizing execute methods for use-cases that need to add additional logic for forking to new threads. This change also adds a test for the optimization added in LUCENE-8865.
This change is fully backwards compatible since ExecutorService implements Executor.
[Legacy Jira: ASF subversion and git services on Jun 20 2019]
Commit c6899fc40d71fe6343f8d83c02641501aaaea049 in lucene-solr's branch refs/heads/master from Simon Willnauer https://gitbox.apache.org/repos/asf?p=lucene-solr.git;h=c6899fc
LUCENE-8865: Move to executor in IndexSearcher (#731)
In order to simplify testing this change moves to use the Executor interface instead of ExecutorService. This change also simplifies customizing execute methods for use-cases that need to add additional logic for forking to new threads. This change also adds a test for the optimization added in LUCENE-8865.
This change is fully backwards compatible since ExecutorService implements Executor.
[Legacy Jira: ASF subversion and git services on Jun 20 2019]
Commit 741207da14607969620923e2f77d64bd811fd350 in lucene-solr's branch refs/heads/branch_8x from Simon Willnauer https://gitbox.apache.org/repos/asf?p=lucene-solr.git;h=741207d
LUCENE-8865: Move to executor in IndexSearcher (#731)
In order to simplify testing this change moves to use the Executor interface instead of ExecutorService. This change also simplifies customizing execute methods for use-cases that need to add additional logic for forking to new threads. This change also adds a test for the optimization added in LUCENE-8865.
This change is fully backwards compatible since ExecutorService implements Executor.
[Legacy Jira: ASF subversion and git services on Jun 20 2019]
Commit 741207da14607969620923e2f77d64bd811fd350 in lucene-solr's branch refs/heads/branch_8x from Simon Willnauer https://gitbox.apache.org/repos/asf?p=lucene-solr.git;h=741207d
LUCENE-8865: Move to executor in IndexSearcher (#731)
In order to simplify testing this change moves to use the Executor interface instead of ExecutorService. This change also simplifies customizing execute methods for use-cases that need to add additional logic for forking to new threads. This change also adds a test for the optimization added in LUCENE-8865.
This change is fully backwards compatible since ExecutorService implements Executor.
[Legacy Jira: ASF subversion and git services on Jun 20 2019]
Using Executor is also much better if you want a completely different type of thread pool. Having the most abstract and simple interface for submitting/executing jobs is nice.
[Legacy Jira: Uwe Schindler (@uschindler) on Jun 20 2019]
I randomly came across the issue, this is a nice change! Were you able to measure the improvement?
[Legacy Jira: Tony Xu on Jun 24 2019]
@hypothesisx86 I didn't run any benchmarks. maybe @mikemccand can provide infos if there are improvements.
[Legacy Jira: Simon Willnauer (@s1monw) on Jun 25 2019]
I plan to test this using our production benchmarks ... will try to do that soon.
[Legacy Jira: Michael McCandless (@mikemccand) on Jun 26 2019]
Alas, I ran our internal benchmarks (production queries on production documents, measuring red-line QPS and long-pole query latencies at 10% capacity) and I could not measure any change due to this fix – it seems to be in the noise.
I was hoping for a small gain due to one fewer thread context switch ... but I still think the change is a good one! Thanks @s1monw!
[Legacy Jira: Michael McCandless (@mikemccand) on Jul 22 2019]
Closing after the 8.2.0 release
[Legacy Jira: Ignacio Vera (@iverase) on Jul 26 2019]
Today we don't utilize the incoming thread for a search when IndexSearcher has an executor. This thread is only idleing but can be used to execute a search once all other collectors are dispatched.
Legacy Jira details
LUCENE-8865 by Simon Willnauer (@s1monw) on Jun 17 2019, resolved Jun 18 2019