Hi David,

Thanks for the KIP!

Nitpick: in the intro paragraph, "Operators of Apache Kafka clusters have 
literally no information about the clients connected to their clusters" seems a 
bit too strong.  We have some information, right?  For example, the client ID, 
where clients are connecting from, etc.  Maybe it would be clearer to say "very 
little information about the type of client software..."

Instead of ClientName and ClientVersion, how about ClientSoftwareName and 
ClientSoftwareVersion?  This might make it clearer what the fields are for.  I 
can see people getting confused about the difference between ClientName and 
ClientId, which sound pretty similar.  Adding "Software" to the field name 
makes it much clearer what the difference is between these fields.

In the "ApiVersions Request/Response Handling" section, it seems like there is 
some out-of-date text.  Specifically, it says "we propose to add the supported 
version of the ApiVersionsRequest in the response sent back to the client 
alongside the error...".  But on the other hand, elsewhere in the KIP, we say 
"ApiVersionsResponse is bumped to version 3 but does not have any changes in 
the schema"  Based on the offline discussion we had, the correct text is the 
latter (we're not changing ApiVersionsRerponse).  So we should remove the text 
about adding stuff to ApiVersionsResponse.

In a similar vein, the comment "  // Version 3 is similar to version 2" should 
be " // Version 3 is identical to version 2" or something like that.  Although 
I guess technically things which are identical are also similar, the current 
phrasing could be misleading.

Now that KIP-482 has been accepted, I think there are a few things that are 
worth clarifying in the KIP.  Firstly, ApiVersionsRequest v3 should be a 
"flexible version".  Mainly, that means its request header will support 
optional tagged fields.  However, ApiVersionsResponse v3 will *not* support 
optional tagged fields in its response header.  This is necessary because-- as 
you said-- the broker must look at a fixed offset to find the error code, 
regardless of the response version.

I think we should force client software names and versions to follow a regular 
expression and disconnect if they do not.  This will prevent issues when using 
these strings in metrics names.  Probably we want something like:

[\.\-A-Za-z0-9]?[\.\-A-Za-z0-9 ]*[\.\-A-Za-z0-9]?

Notice this does _not* include underscores, since they get converted to dots in 
JMX, causing ambiguity.  It also doesn't allow the first or last character to 
be a space.

best,
Colin


On Mon, Sep 16, 2019, at 04:39, Mickael Maison wrote:
> +1 (non binding)
> Thanks for the KIP!
> 
> On Mon, Sep 16, 2019 at 12:07 PM David Jacot <dja...@confluent.io> wrote:
> >
> > Hi all,
> >
> > I would like to start a vote on KIP-511:
> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-511%3A+Collect+and+Expose+Client%27s+Name+and+Version+in+the+Brokers
> >
> > Best,
> > David
>

Reply via email to