-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Introduce separate Akka dispatchers for CouchDB and Kafka Clients (#2954) #3515
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@cbickel this looks good to me - do you want to take a look otherwise we can merge this.
- Rest of system continues to use the default system dispatcher - Kafka and CouchDB clients each get their own dispatchers * This should prevent all of the akka based stuff from competing constantly for threads * Kafka and Couch can be tuned now based on individual needs * Using thread-pool dispatchers, which are best suited for these processes (default is fork-join) - Dispatchers are defined in common `reference.conf`, so config can be overridden by dependents Refs apache#2954
3f4d46f
to
74c4ac8
Compare
Codecov Report
@@ Coverage Diff @@
## master #3515 +/- ##
=========================================
+ Coverage 75% 75% +<.01%
=========================================
Files 128 128
Lines 6081 6082 +1
Branches 398 389 -9
=========================================
+ Hits 4561 4562 +1
Misses 1520 1520
Continue to review full report at Codecov.
|
@bwmcadams @chetanmeh this might be of use for other datastores so I wonder if we should rename the couch configuration to data store. |
+1 |
Makes sense to me. I know it occurred to me while I was putting this
together, and tunable dispatchers for each component like this is a good
thing.
|
@bwmcadams #3779 introduces a new |
@chetanmeh good question. I think the quandary is whether there's a single shared |
@bwmcadams There are 2 aspects
Currently we have few storage impls which use Akka HTTP stack like CouchDB, S3 and ElasticSearch. So for them I think it would be better to have a generic So to start with lets have a generic Thoughts? |
…ache#3515) - Rest of system continues to use the default system dispatcher - Kafka and CouchDB clients each get their own dispatchers * This should prevent all of the akka based stuff from competing constantly for threads * Kafka and Couch can be tuned now based on individual needs * Using thread-pool dispatchers, which are best suited for these processes (default is fork-join) - Dispatchers are defined in common `reference.conf`, so config can be overridden by dependents Refs apache#2954
Refs #2954
Description
This reopens the previous #2956 PR; fork-join-executor wasn't the right choice previously and it is using Thread Pool dispatchers now, which are the correct way to handle this kind of IO separation with Akka. Defaults are set to what should be a reasonable starting point, especially given that couch and kafka now have their own separate execution pools from the "Default"/main system.
Kafka and CouchDB clients each get their own dispatchers
reference.conf
, so config can be overridden by dependentsCurrently, OpenWhisk is sharing a single fork-join-executor across the board for the entire
ActorSystem
, which is less than ideal especially when dealing with potentially blocking IO.Related issue and scope
My changes affect the following components
Types of changes
Checklist: