Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • error_code
  • group_id
  • state
  • protocol_type
  • protocol
  • members (only a member summary is returned per member that misses some useful member info too)

There are additional info Additional info exist or can be derived in a GroupMetadata object on the server side, some of which could be useful if exposed via the DescribeGroups protocol. Here are some examples:

  • generationId
  • leaderId
  • newMemberAdded
  • receivedConsumerOffsetCommits

  • receivedTransactionalOffsetCommits

  • supportedProtocols per member
  • subscribed topics supportedProtocols per member

Enhancing the protocol with some of this additional info means improving the existing tools that make use of it. For example, using this additional info, the consumer group command's --describe output will provide more information about each consumer group to help with studying understanding the group behavior, its monitoring, troubleshooting, etc. 

Public Interfaces

This is the latest version (v1) of DescribeGroups protocol:

...

Code Block
DescribeGroups Request (Version: 2) => [group_ids] 
  group_ids => STRING


DescribeGroups Response (Version: 2) => throttle_time_ms [groups] 
  throttle_time_ms => INT32
  groups => error_code group_id state protocol_type protocol generation_id leader_id new_member_added received_consumer_offset_commits received_transactional_offset_commits [members] 
    error_code => INT16
    group_id => STRING
    state => STRING
    protocol_type => STRING
    protocol => STRING
  * generation_id => INT32
  * leader_id => STRING
  * new_member_added => BOOLEAN
  * received_consumer_offset_commits => BOOLEAN
  * received_transactional_offset_commits => BOOLEAN
    members => member_id client_id client_host member_metadata member_assignment member_subscription [member_protocols]
      member_id => STRING
      client_id => STRING
      client_host => STRING
      member_metadata => BYTES
      member_assignment => BYTES
  *   member_subscription => BYTE
  *   member_protocols => STRING

...

  1. Create version 2 of DescribeGroups protocol to include additional information about the consumer group and also each group member for the API clients.
  2. Update the consumer group command to provide the added information in the command output (where applicable). Note that this KIP will impact improve upon KIP-175 where group state and detailed member information will also be returned by the consumer group command using additional command line options. Therefore, If this KIP is implemented before KIP-175, this step can be skipped (as the output of some of the sub-options introduced in KIP-175 will make the command line adjustments to leverage newly available information).If this KIP is implemented after KIP-175, this step will be implemented as part of the KIPimprove to include the newly available information by this KIP. Suggested changes are:
    1. Updating the --state option to also include a GENERATION-ID and LEADER-ID column.
    2. Providing the missing member ASSIGNMENT-STRATEGY value for --members option.
    3. Providing the missing member SUBSCRIPTION value for --members --verbose option.
  3. On a related subject but perhaps unrelated to the protocol enhancement, also update the consumer group command to provide filtering by topic as well (similar to how the old consumer offset checker tool supported this filtering).

Compatibility, Deprecation, and Migration Plan

If Since this KIP is implemented before follows KIP-175, there is no compatibility concerns. This all existing protocol fields remain unchanged.If the KIP is implemented after KIP-175, the output for sub-options --members and --state that are introduced in that KIP will be modified to also include the newly added fields. Therefore, clients who rely on the output for those sub-options may need to be adjusted.

Rejected Alternatives

...

It also helps the consumer group --describe command to fill some of the newly added columns introduced by KIP-175 (i.e. ASSIGNMENT-STRATEGY for --members options, and SUBSCRIPTION for --members --verbose option).

Rejected Alternatives

  • Providing this additional information in the server logs: It is much more convenient to look up this new pieces of information via the consumer group command tool. Plus, these fields and their underlying concepts are not likely to disappear in the future. So we would not have to worry about making a protocol change that will likely become obsolete in the future.