-
Notifications
You must be signed in to change notification settings - Fork 630
Add bulk replication throttle mode (set throttle once inter-broker) #2304
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
base: main
Are you sure you want to change the base?
Add bulk replication throttle mode (set throttle once inter-broker) #2304
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.
Looks good @il-kyun! I made a quick pass to help get this in front of the maintainers.
Is there any specific reason why the bulk replication throttle mode shouldn't be enabled by default? It seems like it would be helpful for most rebalances.
cruise-control/src/main/java/com/linkedin/kafka/cruisecontrol/executor/Executor.java
Outdated
Show resolved
Hide resolved
cruise-control/src/main/java/com/linkedin/kafka/cruisecontrol/executor/Executor.java
Outdated
Show resolved
Hide resolved
@kyguy Thanks for starting the review on my PR, I really appreciate it!
I initially set |
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.
Thanks for the updates! Just left some minor comments.
Similar to the related PR here: #2305 I wonder if it would be better to simply update the existing non-batching logic to this batching implementation instead of having it be configurable to save us the code complexity. I can't think of a reason why users would not want to batch requests like this. Anyways, I'll defer the maintainers on that!
cruise-control/src/test/java/com/linkedin/kafka/cruisecontrol/executor/ExecutorTest.java
Outdated
Show resolved
Hide resolved
cruise-control/src/test/java/com/linkedin/kafka/cruisecontrol/executor/ExecutorTest.java
Outdated
Show resolved
Hide resolved
I also think this is useful. |
Summary
bulk.replication.throttle.enabled
(default:true
) toExecutorConfig
.Executor
, when enabled:Expected Behavior
bulk.replication.throttle.enabled=true
:bulk.replication.throttle.enabled=false
:Actual Behavior
Steps to Reproduce
bulk.replication.throttle.enabled=true
and re-run to observe reduced Admin calls and improved completion time.Additional evidence
concurrency.adjuster.max.partition.movements.per.broker=12
default.replica.movement.strategies=com.linkedin.kafka.cruisecontrol.executor.strategy.PrioritizeMinIsrWithOfflineReplicasStrategy,com.linkedin.kafka.cruisecontrol.executor.strategy.PrioritizeOneAboveMinIsrWithOfflineReplicasStrategy,com.linkedin.kafka.cruisecontrol.executor.strategy.PrioritizeSmallReplicaMovementStrategy,com.linkedin.kafka.cruisecontrol.executor.strategy.BaseReplicaMovementStrategy
bulk.replication.throttle.enabled
: the 800 small partitions completed within a few minutes.ReplicationThrottleHelper
in a separate PR; this PR intentionally limits scope to the bulk set/clear behavior.Categorization
This PR resolves #1972