KAFKA-8649: version probing with upgraded leader#7413
KAFKA-8649: version probing with upgraded leader#7413ableegoldman wants to merge 2 commits intoapache:trunkfrom
Conversation
|
This is just my proposal, not the only possible fix. It has some advantages including saving intermediate rebalances (unless the leader and the final rebalance (unless the leader is the last to be bounced). This does come at the cost of some potential awkwardness, as we will be handling a mix of subscription versions during the bounce. Another proposal that was discussed was to have the leader "lie" about the |
|
retest this please |
|
Not going to close this as I think this approach has some advantages, but going with the quicker/simpler fix here for bugfix release of older branches: #7423 Will potentially revisit this as a possible improvement once we at least fix the actual bugs |
Version probing is currently broken when the leader is chosen from one of the new (already upgraded) instances, as older members will blindly upgrade to a version they don't support (then throw an exception) while newer members will receive an assignment with the older version and trigger a new rebalance (leading to rebalance loop if the older members can't upgrade their subscription) because we always send assignments encoded using the min version seen by any client--see ticket for details.
Note that a real "version probing" rebalance is technically one where the leader is old and receives subscriptions it can't understand. In this case we send an assignment back with the old version, which the receiving consumer then knows to downgrade to and trigger another rebalance.
When you have a "new" leader however, I propose we: