AndrewJSchofield commented on code in PR #19508: URL: https://github.com/apache/kafka/pull/19508#discussion_r2080499100
########## clients/src/main/java/org/apache/kafka/common/requests/ListGroupsRequest.java: ########## @@ -50,8 +53,19 @@ public ListGroupsRequest build(short version) { "v" + version + ", but we need v4 or newer to request groups by states."); } if (!data.typesFilter().isEmpty() && version < 5) { - throw new UnsupportedVersionException("The broker only supports ListGroups " + - "v" + version + ", but we need v5 or newer to request groups by type."); + // Types filter is supported by brokers with version 4.0.0 or later. Older brokers only support + // classic groups, so listing consumer groups on an older broker does not need to use a types filter. + // If the types filter is only for consumer and classic, or just classic groups, it can be safely omitted. + // This allows a modern admin client to list consumer groups on older brokers in a straightforward way. + HashSet<String> typesCopy = new HashSet<>(data.typesFilter()); + boolean containedClassic = typesCopy.remove(GroupType.CLASSIC.toString()); + boolean containedConsumer = typesCopy.remove(GroupType.CONSUMER.toString()); + if (!typesCopy.isEmpty() || (!containedClassic && containedConsumer)) { Review Comment: I'm afraid I don't agree. For a 3.7 broker with KIP-848 EA enabled, all groups appear to be classic groups. Because the KIP is incomplete, the broker can neither filter by group type, nor respond with the correct group type. All groups appear to be classic groups. So, I feel this is an outlier specifically because of the partial implementation of the KIP. In 3.8, more of KIP-848 was implemented and it supported the newer RPC version. If the user asks for `ListGroupsOptions.withTypes(List.of(GroupType.CLASSIC))` in all cases except 3.7 with KIP-848 EA enabled, it's going to do the right thing. I would rather not throw `UnsupportedVersionException` for these working cases because of the KIP-848 EA case. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org