On Mon, Apr 4, 2016 at 11:24 AM, Gwen Shapira <g...@confluent.io> wrote:

> >
> >
> >    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,

Agreed, and I think it would be fine to make permanent support (barring
massive changes to the protocol) part of the KIP text. There's really no
reason not to and it basically just turns this into the basis for a pretty
simple handshake protocol.

(I'm tempted to not even bring this up given that we're converging, but one
reason I could see this being changed in the future is that protocol
support is only conveyed in one direction. This could also be turned into a
slightly more general handshake approach where the client also advertises
what it supports. However, given the way request/response versioning works,
I can't think of a reason we'd need this atm.)

-Ewen


>
> Gwen
>



-- 
Thanks,
Ewen

Reply via email to