On Mon, Mar 14, 2016 at 7:05 AM, Ismael Juma <ism...@juma.me.uk> wrote:
> Hi Ashish,
>
> A few comments below.
>
> On Fri, Mar 11, 2016 at 9:59 PM, Ashish Singh <asi...@cloudera.com> wrote:
>
>> Sounds like we are mostly in agreement. Following are the key points.
>>
>>    1. Every time a protocol version changes, for any request/response,
>>    broker version, ApiVersion, will be bumped up.
>>
>
> Any thoughts on how we will enforce this?

Code reviews? :)

We are already doing it in ApiVersion (and have been since
0.8.2.0-SNAPSHOT). Enforcing is awesome, but not necessarily part of
this KIP.

>
>
>>    2. Protocol documentation will be versioned with broker version. Every
>>    time there is a broker version change, protocol documentation version
>> needs
>>    to be updated and linked to main documentation page.
>>    3. Deprecation of protocol version will be done via marking the version
>>    as deprecated on the protocol documentation.
>>
>
> I think this is fine for the first version. We may consider doing more in
> the future (logging a warning perhaps).
>
>
>>    4. On getting unknown protocol version, broker will send an empty
>>    response, instead of simply closing client connection.
>>
>
> I am not sure about this one. It's an unusual pattern and feels like a hack.

We discussed this and failed to come up with a better solution that
doesn't break compatibility.
Improvements can be added in the future - nothing can be worse than
current state (where the broker silently closes the connection)

>
>    5. Metadata response will be enhanced to also contain broker version,
>>    VersionInt and VersionString. VersionString will contain internal
>>    version information.
>>
>
> Even though Magnus suggested that it's OK for clients to parse
> `VersionString`, I personally would rather avoid that. Do we really need 3
> separate versions or could we get away with 2? I think it would be good to
> elaborate on this a bit and explain how each of these versions would be
> used (both from the broker and clients perspective).

Agree! I'm also confused.

>
>>    6. Metadata request with single null topic and size of -1 can be used to
>>    fetch metadata response with only broker version information and no
>>    topic/broker info.
>
>    7. On receiving a metadata request with single null topic with size of
>>    -1, broker will respond with only broker version.
>>
>
> As Magnus says, the broker information should be returned. This would also
> help us reduce unnecessary data transfer during NetworkClient's metadata
> updates (KAFKA-3358). At the moment, we get information for all topics in
> situations where we actually want no topics.
>
> Also, I think it's a bit odd to say a `single null topic with size -1`. Do
> we mean an array of topics with size -1 and no elements? That would imply
> introducing a NULLABLE_ARRAY type (we currently have NULLABLE_STRING and
> NULLABLE_BYTES).
>
> Ismael

Reply via email to