Pinging on this, to refresh any inboxes.

On 2023/01/01 20:16:18 Travis Bischel wrote:
> To confirm, you’re now thinking that we should add name + version to every 
> broker in the response? AFAICT, this grows the complexity of implementation a 
> good amount. The implementation of the current proposal is just to add a 
> configuration option and put it in the new string. Adding these fields to the 
> metadata log seems odd (it’s not _really_ interesting to the brokers 
> themselves) and much more technically complex. I’d still personally lean to 
> keep these as top-level fields from only the replying broker. Is there a way 
> we can get another opinion here?
> 
> - Travis
> 
> On 2022/12/16 16:21:59 David Jacot wrote:
> > 05/06. I also find BrokerSoftwareName and BrokerSoftwareVersion odd to
> > be honest because the RPC is supposed to describe the cluster. I was
> > also re-considering adding it per broker but this would be a little
> > more involved. It basically requires every broker to send their
> > version to the controller and the controller has to send the versions
> > to all the brokers via the metadata log. That would be the cleanest
> > approach.
> > 
> > Best,
> > David
> > 
> > On Fri, Dec 2, 2022 at 11:58 PM Travis Bischel <tr...@gmail.com> wrote:
> > >
> > > Thanks for the reply,
> > >
> > > 04. `nullable-string`, my mistake on that — this is the representation I 
> > > have for nullable strings in my own DSL in franz-go. I’ve fixed that.
> > >
> > > 05. I think that ClusterSoftwareVersion and ClusterSoftwareName would be 
> > > a bit odd: technically these are per-broker responses, and if a person 
> > > truly does want to determine the cluster version, they need to request 
> > > all brokers. It will be more difficult to explain in documentation that 
> > > “even though this says cluster, it means broker”. I was also figuring 
> > > that `BrokerSoftwareName` and `BrokerSoftwareVersion` immediately 
> > > following the `Brokers` array had nice consistency.
> > >
> > > 06. I’ve added an AdminClient API section that adds two new methods to 
> > > DescribeClusterResponse: `public String brokerSoftwareName()` and `public 
> > > String brokerSoftwareVersion()`.
> > >
> > > 07. I’ve added a “Return the name and version per broker in the 
> > > DescribeCluster response” rejected alternative.
> > >
> > > Let me know what you think,
> > > - Travis
> > >
> > > On 2022/12/02 17:25:37 David Jacot wrote:
> > > > Yeah, it is too late for 3.4. I have a few more comments:
> > > >
> > > > 04. `nullable-string` is not a valid type. You have to use "type":
> > > > "string", "versions": "1+", "nullableVersions": "1+".
> > > >
> > > > 05. BrokerSoftwareName/BrokerSoftwareVersion feel a bit weird in a
> > > > DescribeClusterResponse. I wonder if we should replace Broker by
> > > > Cluster. It is not 100% accurate but it is rare to not have an
> > > > homogeneous cluster.
> > > >
> > > > 06. We need to extend the java Admin client to expose those fields. We
> > > > cannot add fields to the protocol that are not used anywhere in Kafka.
> > > >
> > > > 07. Could we add in the rejected alternatives why we don't add the
> > > > name/version per broker? It is because it is not available centrally
> > > > in Kafka.
> > > >
> > > > Best,
> > > > David
> > > >
> > > > On Fri, Dec 2, 2022 at 6:03 PM Travis Bischel <tr...@gmail.com> wrote:
> > > > >
> > > > > I see now that this KIP is past the freeze deadline and will not make 
> > > > > 3.4 — but, 3.4 thankfully will still be able to be detected by an 
> > > > > ApiVersions response due to KIP-866. I’d like to proceed with this 
> > > > > KIP to ensure full implementation can be agreed upon and merged by 
> > > > > 3.5.
> > > > >
> > > > > Thanks!
> > > > > - Travis
> > > > >
> > > > > On 2022/12/02 16:40:26 Travis Bischel wrote:
> > > > > > Hi David,
> > > > > >
> > > > > > No worries for the late reply — my main worry is getting this in by 
> > > > > > Kafka 3.4 so there is no gap in detecting versions :)
> > > > > >
> > > > > > I’m +1 to adding this to DescribeCluster. I just edited the KIP to 
> > > > > > replace ApiVersions with DescribeCluster, and added the original 
> > > > > > ApiVersions idea to the list of rejected alternatives. Please take 
> > > > > > a look again and let me know what you think.
> > > > > >
> > > > > > Thank you!
> > > > > > - Travis
> > > > > >
> > > > > > On 2022/12/02 15:35:09 David Jacot wrote:
> > > > > > > Hi Travis,
> > > > > > >
> > > > > > > Please, excuse me for my late reply.
> > > > > > >
> > > > > > > 02. Yeah, I agree that it is more convenient to rely on the api
> > > > > > > versions but that does not protect us from misuages.
> > > > > > >
> > > > > > > 03. Yeah, I was about to suggest the same. Adding the information 
> > > > > > > to
> > > > > > > the DescribeCluster API would work and we also have the
> > > > > > > Admin.describeCluster API to access it. We could provide the 
> > > > > > > software
> > > > > > > name and version of the broker that services the request. Adding 
> > > > > > > it
> > > > > > > per broker is challenging because the broker doesn't know the 
> > > > > > > version
> > > > > > > of the others. If you use the API directly, you can always send 
> > > > > > > it to
> > > > > > > all brokers in the cluster to get all the versions. This would 
> > > > > > > also
> > > > > > > mitigate 02. because clients won't use the DescribeCluster API to 
> > > > > > > gate
> > > > > > > features.
> > > > > > >
> > > > > > > Best,
> > > > > > > David
> > > > > > >
> > > > > > > On Fri, Nov 11, 2022 at 5:50 PM Travis Bischel <tr...@gmail.com> 
> > > > > > > wrote:
> > > > > > > >
> > > > > > > > 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