Viktor Somogyi-Vass created KAFKA-9814:
------------------------------------------

             Summary: Allow AdminClient.listTopics to list based on expression
                 Key: KAFKA-9814
                 URL: https://issues.apache.org/jira/browse/KAFKA-9814
             Project: Kafka
          Issue Type: Improvement
    Affects Versions: 2.5.0
            Reporter: Viktor Somogyi-Vass
            Assignee: Viktor Somogyi-Vass


Currently listTopics would list all the topics in the cluster which often isn't 
desired due to the large number of topics and because the authorizer would 
check access for every topic which could result in various bloated access/audit 
logs that would make them hard to read and also in case of many topics it isn't 
really effective to return all of them due to the response's size.

To take an example let's have a user who issues a naive command such as:
{noformat}
kafka-topics --list --topic topic6 --bootstrap-server mycompany.com:9092 
--command-config client.properties
{noformat}
In this case the admin client would issue a metadata request for all the 
topics. When this request gets to the broker then it will try to check 
permissions to every topic in the cluster and then return those which are 
allowed for "describe" to the client. Then the command when it gets the answer 
will simply filter out {{topic6}} from the response.

Looking at this problem we can see that if we allow the broker to do the 
filtering then we can:
* do less permission checks
* return less data to the clients

Regarding the solution I see two path but both of them of course subject 
community discussion:
# modify the MetadataRequest and put some kind of regex in it 
# create a new list API that would contain this filter pattern
Perhaps the list API would make more sense as the MetadataRequest is currently 
used because it just fits but there is no real reason to extend it with this as 
the functionality won't be used elsewhere.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to