Hi Kowshik,

Thanks again for working on this-- it looks great.  I went over the KIP again 
and have a few more comments.

===

It would be good to note that deprecating a feature version (in other words, 
increasing minVersionLevel on the broker) is an incompatible change, which 
requires a major release of Kafka.  

===

I think the strategy for transitioning from not having a /features znode to 
having one could use some work. The current proposal is to wait for all the 
brokers to fill in their feature znodes and then pick the highest common 
versions.  But that requires blocking in the controller startup code until the 
whole cluster is active (technically, a point in time which we never really 
know that we have reached...)

Instead, I think it would be better to have a strategy like this:
1. If the controller comes up and there is no /features znode AND the IBP is 
less than 2.6, create a /features znode where all the features are disabled.
2. If the controller comes up and there is no /features znode AND the IBP is 
greater than or equal to 2.6, create a /features znode where all the features 
are enabled at the highest versions supported by the controller.

People upgrading from the pre-KIP-584 world will end up in case #1 because they 
have to do a double roll to upgrade, and during the first roll, the IBP is 
unchanged.  People creating new clusters from scratch will end up in case #2, 
which is what we want since we don't want a brand new cluster to be using old 
feature flag versions.

===

UpdateFeaturesResponse#ErrorMessage should specify nullableVersions since null 
is a valid value here

Also, in the message format, the tags we use need to start at 0.

===

I don't think we need the FEATURE_UPDATE_IN_PROGRESS error code.  The 
controller is basically single-threaded and will only do one of these 
operations at once.  Even if it weren't, though, we could simply block the 
second operation behind the first one.

===

For updateFeatures, it would be good to specify that if a single feature 
version update in the batch can't be done, none of them are done.  I think this 
was the intention, but I wasn't able to find it spelled out (maybe i missed it).

===

And now, something a little bit bigger (sorry).  For finalized features, why do 
we need both min_version_level and max_version_level?  Assuming that we want 
all the brokers to be on the same feature version level, we really only care 
about three numbers for each feature, right?  The minimum supported version 
level, the maximum supported version level, and the current active version 
level.

We don't actually want different brokers to be on different versions of the 
same feature, right?  So we can just have one number for current version level, 
rather than two.  At least that's what I was thinking -- let me know if I 
missed something.

best,
Colin


On Tue, Apr 21, 2020, at 13:01, Dhruvil Shah wrote:
> Thanks for the KIP! +1 (non-binding)
> 
> On Tue, Apr 21, 2020 at 6:09 AM David Jacot <dja...@confluent.io> wrote:
> 
> > Great KIP, thanks! +1 (non-binding)
> >
> > On Fri, Apr 17, 2020 at 8:56 PM Guozhang Wang <wangg...@gmail.com> wrote:
> >
> > > Thanks for the great KIP Kowshik, +1 (binding).
> > >
> > > On Fri, Apr 17, 2020 at 11:22 AM Jun Rao <j...@confluent.io> wrote:
> > >
> > > > Hi, Kowshik,
> > > >
> > > > Thanks for the KIP. +1
> > > >
> > > > Jun
> > > >
> > > > On Thu, Apr 16, 2020 at 11:14 AM Kowshik Prakasam <
> > > kpraka...@confluent.io>
> > > > wrote:
> > > >
> > > > > Hi all,
> > > > >
> > > > > I'd like to start a vote for KIP-584. The link to the KIP can be
> > found
> > > > > here:
> > > > >
> > > > >
> > > >
> > >
> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-584%3A+Versioning+scheme+for+features
> > > > > .
> > > > >
> > > > > Thanks!
> > > > >
> > > > >
> > > > > Cheers,
> > > > > Kowshik
> > > > >
> > > >
> > >
> > >
> > > --
> > > -- Guozhang
> > >
> >
>

Reply via email to