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)

Reply via email to