frankvicky opened a new pull request, #22627: URL: https://github.com/apache/kafka/pull/22627
JIRA: KAFKA-20624 This PR is a part of KIP-1331 Update RPC KafkaApis wiring. handleStreamsGroupTopologyDescriptionUpdate has lived as a placeholder stub since KAFKA-20620 (always returning UNSUPPORTED_VERSION), leaving the RPC unreachable end-to-end even though the coordinator-side method merged with KAFKA-20623 split 2 (#22552). Replace the stub with the real handler: streams-protocol-enabled gate, READ on GROUP authorization, then dispatch to groupCoordinator.streamsGroupTopologyDescriptionUpdate and surface either the coordinator's response or a getErrorResponse-wrapped exception via sendMaybeThrottle. Same shape as handleStreamsGroupHeartbeat. The READ-on-GROUP choice follows KIP-1331's explicit "like an offset commit, a topology push is not a modification of the GROUP" framing — apps deployed with READ-only group ACLs can push topologies without an ACL upgrade. Describe path. streamsGroupDescribe is extended with an IncludeTopologyDescription flag. When set, a new StreamsGroupTopologyDescriptionManager.attachTopologyDescriptions building block calls plugin.getTopology(groupId, topologyEpoch) for each DescribedGroup whose persisted StoredDescriptionTopologyEpoch matches the group's current topology epoch, and populates the response's TopologyDescription and TopologyDescriptionStatus fields. Per-group status follows KIP-1331: NOT_REQUESTED (default; client did not ask), NOT_STORED (no description recorded or epoch mismatched or plugin returned null), ERROR (plugin failed), AVAILABLE (topology attached). Chain assembly stays on GroupCoordinatorService; the manager exposes only the per-group plugin invocation as a building block, mirroring invokeSetTopology and invokeDeleteTopologies. A new StreamsGroupTopologyDescriptionConverter.toDescribeResponse sibling of fromRequest translates the broker-side POJO into the wire schema and is documented to assume the POJO's canonical-constructor non-null collection invariants, with the manager's catch(Exception) folding any contract bypass into per-group ERROR so a single malformed response cannot poison the batch. Broker wiring. BrokerServer's plugin instantiation (via config.getConfiguredInstance) and RequestConvertToJson entries for StreamsGroupTopologyDescriptionUpdate Request/Response and for the TopologyDescription fields on the describe response were already in place from earlier sub-tasks; no change needed. -- 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: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
