> > > In case of connection closures, the KIP recommends that clients should > use some other method of determining the apiRequest version to use, > like, > probing. For instance, client will send V0 version of apiVersion request > and will try higher versions incrementally. In case b, client will > eventually get apiVersion response and know what api versions it should > use. For case a and c, client will eventually give up and propagate an > error to application. > > I strongly disagree that we should recommend this probing method. Probing is essentially what clients do now (since we lack any way to communicate versions), and is what we are trying to solve with this KIP. Considering that different brokers could have different versions, and that brokers can change version at any point, this sounds slow, difficult to implement and fragile.
Also note that even with this method, without VersionRequest v0, we will break clients in the one way Kafka currently promises to never break: Old clients won't be able to work with new brokers. If this is part of KIP-35, I am against it. Since all Request/Responses in our protocol have versions, publishing versions for each request/response should be something we can easily support into the future. It sounds far easier than asking every single client to implement the method you specified above. Gwen