Hi Colin,

Thank you for your feedback! Please find my comments/answers below:

*> 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..."*

That's fair. I will update it.

*> 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.*

Good point. I like your suggestion. I will update it.

*> 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.*

Sorry for the confusion. I think my usage of the word "add" is not
appropriate here. The ApiVersionsResponse won't change as you said. My
proposal is to provide the supported versions of the ApiVersionsRequest in
the response by populating the existing `api_versions` field. In the
current version, when an error occurs, the `api_versions` is empty in the
response. Providing it enables the client to re-send the latest version
supported by the broker instead of defaulting to zero. I will update the
KIP to make this clearer.

*> 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.*

Good point. I will use `Version 3 is the same as version 2.` which is the
statement already used in other requests/responses.


*> 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.*
Right. I have put it because I thought your PR would do it. I will update
this. By the way, it means that the request/response must be updated to the
generated ones, isn't it? AVR is still using the old mechanism.



*> 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.*

I do agree and I have already put something along those lines in the
proposal. See the "Validation" chapter. I have proposed to use a more
restrictive validation which does not allow white spaces. I think spaces
wouldn't be used in software name nor version. Is it OK for you if we stick
to the more restrictive one? Thank your letting me know about the
underscores. I have missed this.

Regarding disconnecting when the validation fails, this is what I have
proposed as well. Magnus has brought a good point though. Using an explicit
error like `INVALID_REQUEST` may be better. In this case, the client would
have to disconnect when it happens. I will update the KIP to reflect this.

Best,
David


On Wed, Sep 18, 2019 at 9:46 PM Colin McCabe <cmcc...@apache.org> wrote:

> That's fair.  We could use the existing error code in the response and
> pass back something like INVALID_REQUEST.
>
> I'm not sure if we want to add an error string field just for this
> (although they're a good idea in general...)
>
> best,
> Colin
>
> On Wed, Sep 18, 2019, at 12:31, Magnus Edenhill wrote:
> > > I think we should force client software names and versions to follow a
> > regular expression and disconnect if they do not.
> >
> > Disconnecting is not really a great error propagation method since it
> > leaves the client oblivious to what went wrong.
> > Instead suggest we return an ApiVersionResponse with an error code and a
> > human-readable error message field.
> >
> >
> >
> > Den ons 18 sep. 2019 kl 20:05 skrev Colin McCabe <cmcc...@apache.org>:
> >
> > > 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