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
KAFKA-2435: Fair consumer partition assignment strategy #146
Conversation
kafka-trunk-git-pr #158 FAILURE |
kafka-trunk-git-pr #170 FAILURE |
I don't believe that the @asfbot test failure is at all related to this change. I've built the project successfully locally several times.
|
Looks like #160 may address this failed test... |
@noslowerdna Out of curiosity, do you have any use cases where the consumers are subscribing to different sets of topics? The only such case I can think of is during a rolling upgrade. |
@hachikuji Our primary use case is similar to a rolling upgrade - the members of a consumer group independently retrieve configuration on a regular interval about what topics to subscribe to, and close/refresh their consumer stream whenever the configured set of topics changes. A config change should eventually propagate to all consumers within a few minutes, but we want to still be processing optimally and keep the number of fetcher threads as evenly balanced as possible during the transition window. |
799514d
to
b3010fd
Compare
9471327
to
e7abd3a
Compare
@noslowerdna Since the consumer supports differing subscriptions, it may make sense for us to include an assignor which takes that into account (even if there don't seem to be any use cases which call for differing subscriptions in a steady state). That said, this change does impact the client configuration (even if in a compatible way), so I wonder if we need a KIP. Also, the new consumer allows users to provide their own assignor implementation, so if the use case is not too common, it may be better to leave it out of core Kafka. What do you think? |
@hachikuji I will go ahead and create the KIP documentation for this. It's a minor change but still worth discussing with a wider audience. I implemented an equivalent "fair" assignor for the new consumer last night (#979). For that pull request I added a new test (testMultipleConsumersUnbalancedSubscriptions) for each of the 3 implementations, that illustrates the skewed assignments for the range and roundrobin assignors with a borderline worst-case scenario. For the new consumer we could certainly include a custom implementation in our own code if the KIP gets rejected. In that case I think we should at least document somewhere that the roundrobin assignor can give somewhat suboptimal results if the subscriptions are not identical (which is/will be allowed as of https://issues.apache.org/jira/browse/KAFKA-2172). |
@hachikuji It seems that I do not have sufficient permissions to create the KIP wiki page. Here's an initial draft: https://gist.github.com/noslowerdna/577e25182d69306532d1 |
@noslowerdna What's your apache id? I can ask someone to give you access. |
@hachikuji Thanks, I'm "noslowerdna" there also. |
@noslowerdna I asked @gwenshap to give you wiki permissions. |
1f478e7
to
20d769d
Compare
Refer to this link for build results (access rights to CI server needed): |
Refer to this link for build results (access rights to CI server needed): |
Refer to this link for build results (access rights to CI server needed): |
* add all broker-side configs * check for transaction timeout value * added one more exception type
Is this change set still active? |
Refer to this link for build results (access rights to CI server needed): |
Refer to this link for build results (access rights to CI server needed): |
Refer to this link for build results (access rights to CI server needed): |
* add all broker-side configs * check for transaction timeout value * added one more exception type
* add all broker-side configs * check for transaction timeout value * added one more exception type
* add all broker-side configs * check for transaction timeout value * added one more exception type
Closing this since the JIRA has been resolved as "won't fix." |
…ther to turn on the controller request merging feature (apache#146) TICKET = N/A LI_DESCRIPTION = This PR adds a new config li.combined.control.request.enable and the znode /li_combined_control_request_flag to control whether the controller request merging feature should be turned on or off. EXIT_CRITERIA = N/A
…ther to turn on the controller request merging feature (apache#146) TICKET = N/A LI_DESCRIPTION = This PR adds a new config li.combined.control.request.enable and the znode /li_combined_control_request_flag to control whether the controller request merging feature should be turned on or off. EXIT_CRITERIA = N/A
…ther to turn on the controller request merging feature (apache#146) TICKET = N/A LI_DESCRIPTION = This PR adds a new config li.combined.control.request.enable and the znode /li_combined_control_request_flag to control whether the controller request merging feature should be turned on or off. EXIT_CRITERIA = N/A
…ther to turn on the controller request merging feature (apache#146) TICKET = N/A LI_DESCRIPTION = This PR adds a new config li.combined.control.request.enable and the znode /li_combined_control_request_flag to control whether the controller request merging feature should be turned on or off. EXIT_CRITERIA = N/A
No description provided.