Hi David,

Thanks again for the KIP.

David Arthur wrote:
 > 101. Change AllowDowngrade bool to DowngradeType int8 in
 > UpgradeFeatureRequest RPC. I'm wondering if we can kind of "cheat" on this
 > incompatible change since it's not currently in use and totally remove the
 > old field and leave the versions at 0+. Thoughts?

We've been talking about having an automated RPC compatibility checker, and 
doing something like this might make that more complex. On the other hand, I 
suppose it could be annotated as a special case.

David Arthur wrote:
 > The active controller should probably validate whatever value is read from
 > meta.properties against its own range of supported versions (statically
 > defined in code). If the operator sets a version unsupported by the active
 > controller, that sounds like a configuration error and we should shutdown.
 > I'm not sure what other validation we could do here without introducing
 > ordering dependencies (e.g., must have quorum before initializing the
 > version)

It would be nice if the active controller could validate that a majority of the 
quorum could use the proposed metadata.version. The active controller should 
have this information, right? If we don't have recent information  from a 
quorum of voters, we wouldn't be active.

David Arthur wrote:
 > Hey folks, I just updated the KIP with details on proposed changes to the
 > kafka-features.sh tool. It includes four proposed sub-commands which will
 > provide the Basic and Advanced functions detailed in KIP-584. Please have a
 > look, thanks!

I like the new sub-commands... seems very clean.

Do we need delete as a command separate from downgrade? In KIP-584, we agreed
to keep version 0 reserved for "no such feature flag." So downgrading to
version 0 should be the same as deletion.

On another note, it seems like we should spell out that metadata.version begins 
at 1 in KRaft clusters, and that it's always 0 in ZK-based clusters. Maybe this 
is obvious but it would be good to write it down here.

It seems like we never got closure on the issue of simplifying feature levels. 
As I said earlier, I think the min/max thing is not needed for 99% of the 
use-cases we've talked about for feature levels. Certainly, it's not needed for 
metadata.version. Having it be mandatory for every feature level, whether it 
needs it or not, is an extra complication that I think we should get rid of, 
before this interface becomes set in stone. (Use-cases that need this can 
simply have two feature flags, X_min and X_max, as I said before.)

We probably also want an RPC implemented by both brokers and controllers that 
will reveal the min and max supported versions for each feature level supported 
by the server. This is useful for diagnostics. And I suppose we should have a 
command line option to the features command that broadcasts it to everyone and 
returns the results (or lack of result, if the connection couldn't be made...)

best,
Colin

Reply via email to