Matthias J. Sax created KAFKA-21025:
---------------------------------------
Summary: StreamsGroupHeartbeatRequest.Builder does not clear owned
warm-up tasks when it negotiates request version 0
Key: KAFKA-21025
URL: https://issues.apache.org/jira/browse/KAFKA-21025
Project: Kafka
Issue Type: Bug
Components: streams
Affects Versions: 4.4.0
Reporter: Matthias J. Sax
Fix For: 4.4.0
`StreamsGroupHeartbeatRequest.Builder.build(short)` clears `TaskOffsets` and
`TaskEndOffsets` when the negotiated request version is 0, but does not clear
`WarmupTasks`. At the same time, a 4.2 or 4.3 broker rejects a heartbeat that
reports a non-empty set of owned warm-up tasks.
So a client that owns a warm-up task and then negotiates RPC version 0 has
every heartbeat rejected with `InvalidRequestException`. The client cannot
clear the task on its own, because dropping it requires an assignment, and an
assignment only arrives in a heartbeat response. Restarting the member
recovers, since a re-joining member reports no owned tasks.
This bug does not affect 4.4 directly, because we don't assign warmup tasks
yet, however, the bug will surface with 4.5 release: KS 4.4 is "warmup task
ready" and thus a 4.5 broker might assign warmup tasks to a 4.4 client. If the
broker get downgraded afterward to 4.3/4.2, the 4.4 client would report its
warmups to the broker, and the broker reject the heartbeat.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)