Grant Henke created KAFKA-4906: ---------------------------------- Summary: Support 0.9 brokers with a newer Producer or Consumer version Key: KAFKA-4906 URL: https://issues.apache.org/jira/browse/KAFKA-4906 Project: Kafka Issue Type: Improvement Components: clients Affects Versions: 0.10.2.0 Reporter: Grant Henke Assignee: Grant Henke Fix For: 0.10.2.1
KAFKA-4507 added the ability for newer Kafka clients to talk to older Kafka brokers if a new feature supported by a newer wire protocol was not used/required. We currently support brokers as old as 0.10.0.0 because thats when the ApiVersionsRequest/Response was added to the broker (KAFKA-3307). However, there are relatively few changes between 0.9.0.0 and 0.10.0.0 on the wire, making it possible to support another major broker version set by assuming that any disconnect resulting from an ApiVersionsRequest is from a 0.9 broker and defaulting to legacy protocol versions. Supporting 0.9 with newer clients can drastically simplify upgrades, allow for libraries and frameworks to easily support a wider set of environments, and let developers take advantage of client side improvements without requiring cluster upgrades first. Below is a list of the wire protocol versions by release for reference: {noformat} 0.10.x Produce(0): 0 to 2 Fetch(1): 0 to 2 Offsets(2): 0 Metadata(3): 0 to 1 OffsetCommit(8): 0 to 2 OffsetFetch(9): 0 to 1 GroupCoordinator(10): 0 JoinGroup(11): 0 Heartbeat(12): 0 LeaveGroup(13): 0 SyncGroup(14): 0 DescribeGroups(15): 0 ListGroups(16): 0 SaslHandshake(17): 0 ApiVersions(18): 0 0.9.x: Produce(0): 0 to 1 (no response timestamp from v2) Fetch(1): 0 to 1 (no response timestamp from v2) Offsets(2): 0 Metadata(3): 0 (no cluster id or rack info from v1) OffsetCommit(8): 0 to 2 OffsetFetch(9): 0 to 1 GroupCoordinator(10): 0 JoinGroup(11): 0 Heartbeat(12): 0 LeaveGroup(13): 0 SyncGroup(14): 0 DescribeGroups(15): 0 ListGroups(16): 0 SaslHandshake(17): UNSUPPORTED ApiVersions(18): UNSUPPORTED 0.8.2.x: Produce(0): 0 (no quotas from v1) Fetch(1): 0 (no quotas from v1) Offsets(2): 0 Metadata(3): 0 OffsetCommit(8): 0 to 1 (no global retention time from v2) OffsetFetch(9): 0 to 1 GroupCoordinator(10): 0 JoinGroup(11): UNSUPPORTED Heartbeat(12): UNSUPPORTED LeaveGroup(13): UNSUPPORTED SyncGroup(14): UNSUPPORTED DescribeGroups(15): UNSUPPORTED ListGroups(16): UNSUPPORTED SaslHandshake(17): UNSUPPORTED ApiVersions(18): UNSUPPORTED {noformat} Note: Due to KAFKA-3088 it may take up to request.timeout.time to fail an ApiVersionsRequest and failover to legacy protocol versions unless we handle that scenario specifically in this patch. The workaround would be to reduce request.timeout.time if needed. -- This message was sent by Atlassian JIRA (v6.3.15#6346)