[
https://issues.apache.org/jira/browse/KAFKA-21111?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18116683#comment-18116683
]
Lucas Brutschy commented on KAFKA-21111:
----------------------------------------
I think a rebalance and a GC fail-over at the same time doesn't sound very
unlikely.
> Ensure refiner backward compatibility
> -------------------------------------
>
> Key: KAFKA-21111
> URL: https://issues.apache.org/jira/browse/KAFKA-21111
> Project: Kafka
> Issue Type: Sub-task
> Components: group-coordinator, streams
> Reporter: Matthias J. Sax
> Assignee: Matthias J. Sax
> Priority: Critical
>
> We need to ensure that the refiner assigns warm-up task only to new clients,
> RPC version 1+, but not to old RPC version 0 clients (4.2/4.3 release).
> Older clients don't report task-offsets, and thus we cannot use warmup tasks
> because w/o the ability to observe their restore progress, we could never
> promote them as active later.
> Note one corner case: after a GC fail-over, a member might not have send a
> heartbeat yet, and thus we don't know it's RPC version yet. Atm, the code
> treats this incorrectly, and would optimistically assume that it's a v1
> client and that we can put warmup task on the client. This must be change to
> being conservative and treating "unknown" as don't put warmup tasks on the
> client.
> The high level idea is, to add new transient field to `StreamsGroup` to track
> the RPC version. The tricky part is, that the refiner is computing an
> intermediate assignment for the whole group, ie, if might be invoked on a v1
> heartbeat, that there could still be v0 members in the group. So we could
> give the individual member's RPC version into the refiner, and the refiner
> would avoid to put a warmup on older client.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)