On Wed, Sep 29, 2021, at 10:34, David Arthur wrote: > Hey all, > > I'd like to start a discussion around upgrades for KRaft. This design does > not cover any of the ZooKeeper to KRaft migration (which will be covered in > a future KIP). > > The proposal includes the addition of a "metadata.version" feature flag and > deprecates the IBP. A procedure for downgrades is also included in the KIP. > > https://cwiki.apache.org/confluence/x/WAxACw > > Thanks! > David
Hi David, Thanks for the KIP! It's good to see us finding a use for the feature flag mechanism. Since this is the first use of the mechanism, I think we should take some time to fix some issues with the original KIP, before the design gets "set in stone," so to speak. 1. It is not necessary to have two version numbers for each feature flag. I believe the rationale for adding this is that a few features would find it useful. However, those features can just define two flags (x_min and x_max). So I think each feature should have only one feature level number rather than a min and a max. This will simplify a lot of things (including your KIP...) 2. kafka-features.sh should use the more modern Argparse4J format rather than the old school "everything is a separate flag" format. This would allow us to have subcommands. For example, we could have an "upgrade" subcommand, a "nodes" subcommand, etc. Check out kafka-storage.sh for an example of how this can work. There are three subcommands (info, format, random-uuid) and they each have a separate set of flags that they take. For example, "kafka-storage.sh format" takes an --ignore-formatted flag, but this is not valid for "kafka-storage.sh info". best, Colin