Matthias J. Sax created KAFKA-20981:
---------------------------------------

             Summary: Kafka Streams should handle unknown status code 
pro-actively
                 Key: KAFKA-20981
                 URL: https://issues.apache.org/jira/browse/KAFKA-20981
             Project: Kafka
          Issue Type: Bug
          Components: streams
    Affects Versions: 4.2.0
            Reporter: Matthias J. Sax


With KIP-1071, task assignment moved to the broker, and 
StreamsGroupHeartbeatResponse now carries status codes. The status field is 
present since v0. Adding a new status code is a semantic contract change: it 
must be backed by a KIP and a request-version bump, and the broker must gate 
the new code so it is only sent to clients that advertise the introducing 
version (as it does today for MISSING_CLIENT_TAGS, code 6, which is withheld 
from v0 clients). This is subtler than a schema change and easy to get wrong, 
so a buggy broker can send a code an older client does not recognize.

The client decodes every status on every heartbeat via Status.fromCode, which 
throws on an unknown code. Today that throw is silently swallowed 
(https://issues.apache.org/jira/browse/KAFKA-20860): the client keeps 
heartbeating, advances its member epoch, and silently ignores the assignment 
and every one after it, while the coordinator sees a healthy member. Because 
the status is returned on every heartbeat, the condition persists for the 
member's lifetime; once https://issues.apache.org/jira/browse/KAFKA-20860 is 
addressed so the error surfaces, it would recur on every heartbeat unless 
handled here.

We propose to verify the status code pro-actively, and if the client cannot 
recognize it, raise a Streams exception that shuts down the StreamThread and 
triggers the uncaught-exception handler, so the error surfaces cleanly.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to