Two quick mistakes to clarify:

When I say ClusterMetadata, I mean request 60, DescribeCluster.

Also, the email subject of this entire thread should be "[DISCUSS] KIP-885: 
Expose Broker's Name and Version to Clients”. I must have either accidentally 
pasted the “Skip to end of metadata”, or did not delete something.

Cheers,
-Travis

On 2022/11/11 16:45:12 Travis Bischel wrote:
> Thanks for the replies David and Magnus
> 
> David:
> 
> 02: From a client implementation perspective, it is easier to gate features 
> based on the max version numbers returned per request, rather than any 
> textual representation of a string. I’m not really envisioning a client 
> implementation trying to match on an undefined string, especially if it’s 
> documented as just metadata information.
> 
> 03: Interesting, I may be one of the few that does query the version 
> directly. Perhaps this can be some new information that is instead added to 
> request 60, ClusterMetadata? The con with ClusterMetadata is that I’m 
> interested in this information on a per-broker basis. We could add these 
> fields per each broker in the Brokers field, though.
> 
> Magnus:
> 
> As far as I can see, only my franz-go client offers this ability to “guess” 
> the version of a broker — and it’s historically done so through ApiVersions, 
> which was the only way to do this. This feature was used in three projects by 
> two people: my kcl project, and the formerly-known-as Kowl and Kminion 
> projects. 
> 
> After reading through most of the discussion thread on KIP-35, it seems that 
> the conversation about using a broker version string / cluster aggregate 
> version was specifically related to having the client choose how to behave 
> (i.e., choose what versions of requests to use). The discussion was not 
> around having the broker version as a piece of information that a client can 
> use in log lines or for end-user presentation purposes.
> 
> It seems a bit of an misdirected worry that a client implementor may 
> accidentally use an unstructured string field for versioning purposes, 
> especially when another field (ApiKeys) exists for versioning purposes and is 
> widely known. Implementing a Kafka client is quite complex and there are so 
> many other areas an implementor can go wrong, I’m not sure that we should be 
> worried about an unstructured and documented metadata field.
> 
> "the existing ApiVersionsReq  … this information is richer than a single 
> version string"
> 
> Agree, this true for clients. However, it’s completely useless visually for 
> end users.
> 
> The reason Kminion used the version guess was two fold: to emit log a log on 
> startup that the process was talking to Kafka v#.#, and to emit a const gauge 
> metric for Prometheus where people could monitor external to Kafka what 
> version each broker was running.
> 
> Kowl uses the version guess to display the Kafka version the process is 
> talking to immediately when you go to the Brokers panel. I envision that this 
> same UI display can be added to Conduktor, even Confluent, etc.
> 
> kcl uses the version guess as an extremely quick debugging utility: software 
> engineers (not cluster administrators) might not always know what version of 
> Kafka they are talking to, but they are trying to use a client. I often 
> receive questions about “why isn’t this xyz thing working”, I ask for their 
> cluster version with kcl, and then we can jump into diagnosing the problem 
> much quicker.
> 
> I think, if we focus on the persona of a cluster administrator, it’s not 
> obvious what the need for this KIP is. For me, focusing on the perspective of 
> an end-user of a client makes the need a bit clearer. It is not the 
> responsibility of an end-user to manage the cluster version, but it is the 
> responsibility of an end-user to know which version of a cluster they are 
> talking to so that they know which fields / requests / behaviors are 
> supported in a client
> 
> All that said: I think this information is worth it and unlikely to be 
> misused. IMO, ApiVersions is the main place to include this information, but 
> another alternative is ClusterMetadata. Adding these fields to 
> ClusterMetadata might be a bit awkward and may return stale information 
> sometimes during a rolling upgrade.
> 
> Curious to know your thoughts, and again thank you for the consideration and 
> replies,
> - Travis
> 
> On 2022/11/11 13:07:37 Magnus Edenhill wrote:
> > Hi Travis and thanks for the KIP, two comments below:
> > 
> > 
> > Den fre 11 nov. 2022 kl 13:37 skrev David Jacot <da...@gmail.com>:
> > 
> > > 02: I am a bit concerned by clients that could misuse these information.
> > > For instance, one may be tempted to rely on the version to decide whether 
> > > a
> > > feature is enabled or not. The api versions should remain the source of
> > > truth but we cannot enforce it with the proposed approach. That may be
> > > acceptable though.
> > >
> > 
> > We proposed including this in the original ApiVersionRequest KIP-35 (waaay
> > back), but it was rejected
> > for exactly this reason; that it may(will) be misused by clients.
> > 
> > 
> > 
> > I would also like to question the actual end-user use of this information,
> > the existing ApiVersionsReq
> > already provides - on a detailed level - what features and functionality
> > the broker supports -
> > this information is richer than a single version string.
> > 
> > The KIP says "End users can quickly check from a client if the cluster is
> > up to date" and
> > "Clients can also use the broker version in log lines so that end users can
> > quickly see
> > if a version looks about right or if something is seriously broken.":
> > 
> > In my mind that's not typically the end-users role or responsibility, but
> > that of the Kafka cluster operator,
> > who'll already know the version being deployed.
> > 
> > 
> > Regards,
> > Magnus
> > 
> > 
> > 
> > > Le jeu. 10 nov. 2022 à 19:10, Travis Bischel <tr...@gmail.com> a
> > > écrit :
> > >
> > > > Hi all,
> > > >
> > > > I've written a KIP to expose the BrokerSoftwareName and
> > > > BrokerSoftwareVersion to clients:
> > > >
> > > >
> > > >
> > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-885%3A+Expose+Broker%27s+Name+and+Version+to+Clients
> > > >
> > > > If we agree this is useful, it would be great to have this in by 3.4.
> > > >
> > > > Thank you,
> > > > - Travis
> > > >
> > >
> > 

Reply via email to