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]

Reply via email to