[
https://issues.apache.org/jira/browse/KAFKA-8951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Guozhang Wang updated KAFKA-8951:
---------------------------------
Labels: new-rebalance-should-fix (was: )
> Avoid unnecessary rebalances and downtime for "safe" partitions
> ---------------------------------------------------------------
>
> Key: KAFKA-8951
> URL: https://issues.apache.org/jira/browse/KAFKA-8951
> Project: Kafka
> Issue Type: Improvement
> Components: clients, streams
> Affects Versions: 2.4.0
> Reporter: A. Sophie Blee-Goldman
> Priority: Major
> Labels: new-rebalance-should-fix
>
> With cooperative rebalancing, any partition that is encoded in one consumer's
> Subscription cannot be re-assigned to a different consumer during that
> rebalance. The partition must be removed from the assignment and revoked by
> its old owner before triggering a second rebalance during which it can be
> assigned. This is to enforce a synchronization barrier so that no two
> consumers can ever own the same partition at the same time
> This leads to down time for that partition plus a second rebalance, which may
> not always be necessary. In Streams for example, the consumer will pause all
> partitions of an active task until it is running (ie has been initialized and
> restored). It should be safe to give these partitions away, provided they are
> not resumed between sending the joinGroup request and receiving the syncGroup
> response.
> One proposal would be to modify two methods in the ConsumerPartitionAssignor
> interface. 1) ConsumerPartitionAssignor#subscriptionUserData would be passed
> in the set of `ownedPartitions` that will be included in the subscription,
> allowing it to remove any that it knows are safe to give away.
> 2) ConsumerPartitionAssignor#onAssignment would be passed the set of revoked
> partitions, allowing it to remove any that it knows were already reassigned
> and should not trigger another rebalance.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)