Hi all,

If there is no further discussion, I will start vote thread for KIP-1142 
tomorrow.

Thanks,
PoAn

> On Mar 16, 2025, at 5:23 PM, PoAn Yang <yangp...@gmail.com> wrote:
> 
> Hi Andrew,
> 
> Thanks for the review.
> 
> AS1: The kafka-client-metrics.sh —describe —name for a non-existent 
> client-metric shows default configuration.
> The behavior is inconsistent with kafka-configs.sh in this KIP. I add this 
> case to proposed changes as well. Thanks.
> 
> AS2: Thanks for the great suggestion. We have an API DescribeConfig to get 
> all kinds of configuration.
> It’s better to have a API to list all types of configuration. I change 
> ListClientMetricsResources to ListConfigResources
> and remove change for ListGroups. For backward compatibility, we also need to 
> make sure v0 ListConfigResources
> can work as ListClientMetricsResources.
> 
> AS3: Without change for ListGroupsResponse, we don’t need to handle state and 
> type fields in this KIP.
> 
> AS4: Remove change for ListGroupsResponse.
> 
> Thanks,
> PoAn
> 
>> On Mar 14, 2025, at 6:37 PM, Andrew Schofield 
>> <andrew_schofield_j...@outlook.com> wrote:
>> 
>> Hi PoAn,
>> Thanks for the KIP. It would certainly be good to fix this slightly odd 
>> behaviour in Kafka configs.
>> 
>> AS1: I'd like to confirm that the KIP also alters the behaviour of 
>> kafka-client-metrics.sh --describe
>> for the case where the resource does not exist. You do show this in an 
>> example, but I wanted to
>> confirm that this reflects a behaviour change that this KIP will enact.
>> 
>> AS2: I wonder whether there's an alternative way to do this in the protocol. 
>> In the way that
>> you have specified it, if ListGroups specified 
>> IncludeNonExistentGroupWithDynamicConfig,
>> the returned list of groups comes from two sources - the groups in the group 
>> coordinator
>> and the group config resources in the metadata.
>> 
>> I wonder whether actually you could rename the ListClientMetricsResources 
>> RPC to
>> ListConfigResources, bump it to version 1 with a schema like this:
>> 
>> {
>>  "apiKey": 74,
>>  "type": "request",
>>  "listeners": ["broker"],
>>  "name": "ListConfigResourcesRequest",
>>  "validVersions": "0-1",
>>  "flexibleVersions": "0+",
>>  "fields": [
>>      { "name": "ResourceType", "type": "int8", "versions": "1+", "mapKey": 
>> true,
>>        "about": "The resource type." }
>>  ]
>> }
>> 
>> For v0, the resource type is client metrics.
>> 
>> Then, the response would be:
>> 
>> {
>>  "apiKey": 74,
>>  "type": "response",
>>  "name": "ListConfigResourcesResponse",
>>  "validVersions": "0-1",
>>  "flexibleVersions": "0+",
>>  "fields": [
>>      { "name": "ThrottleTimeMs", "type": "int32", "versions": "0+",
>>        "about": "The duration in milliseconds for which the request was 
>> throttled due to a quota violation, or zero if the request did not violate 
>> any quota." },
>>      { "name": "ErrorCode", "type": "int16", "versions": "0+",
>>        "about": "The error code, or 0 if there was no error." },
>>      { "name": "ConfigResources", "type": "[]ConfigResource", "versions": 
>> "0+",
>>        "about": "Each resource in the response.", "fields": [
>>        { "name": "Name", "type": "string", "versions": "0+",
>>          "about": "The resource name." }
>>    ]}
>>  ]
>> }
>> 
>> Then, this could list the group config resources (which is not the same as 
>> listing the existing groups):
>> 
>>> bin/kafka-configs.sh --describe --entity-type groups
>> 
>> And perhaps, this could list the config for the existing groups because it 
>> uses ListGroups to get the list of groups:
>> 
>>> bin/kafka-configs.sh --describe --entity-type groups --effective
>> 
>> The advantage to having ListConfigResources is that it would apply to future 
>> resources too without needing
>> additional RPCs. It also lets you distinguish between what's configuration 
>> and what's live.
>> 
>> Just a random idea for your consideration.
>> 
>> AS3: A group which does not exist but is only represented by a configuration 
>> resource has
>> neither a type nor a state. What values will be used for these fields in the 
>> ListGroupsResponse.
>> 
>> AS4: The comment in ListGroupsResponse for v6 is incorrect. v6 adds the
>> NonExistentGroupWithDynamicConfig field.
>> 
>> 
>> Thanks,
>> Andrew
>> 
>> ________________________________________
>> From: PoAn Yang <yangp...@gmail.com>
>> Sent: 12 March 2025 16:00
>> To: dev@kafka.apache.org <dev@kafka.apache.org>
>> Subject: [DISCUSS] KIP-1142: Allow to list non-existent group which has 
>> dynamic config
>> 
>> Hi all,
>> 
>> I would like to start a discussion thread on KIP-1142.
>> 
>> Currently, kafka-configs.sh requires explicit group names to describe 
>> configurations, which limits flexibility in managing dynamically configured 
>> groups. This KIP proposes extending the ListGroups API to include groups 
>> that do not exist in the coordinator but have dynamic configurations.
>> 
>> Please take a look and feel free to share any thoughts.
>> 
>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1142%3A+Allow+to+list+non-existent+group+which+has+dynamic+config
>> 
>> Thanks,
>> PoAn
> 

Reply via email to