Hi, Justine,

Thanks for the reply.

11. Yes, we can still have the option to set individual features. I was
suggesting that if one uses the tool without either --release-version
or --features, it will just use the latest version of every feature that it
knows. This is what's proposed in the original KIP-584.

12. If we can't deprecate --metadata METADATA, it would be useful to
describe the reason.

Jun

On Thu, Feb 29, 2024 at 3:39 PM Justine Olshan <jols...@confluent.io.invalid>
wrote:

> Hey folks,
>
> Thanks for the discussion. Let me try to cover everyone's comments.
>
> Artem --
> I can add the examples you mentioned. As for naming, right now the feature
> is called "transaction version" or "TV". Are you suggesting it should be
> called "transaction protocol version" or "TPV"? I don't mind that, but just
> wanted to clarify if we want to include protocol or if simply "transaction
> version" is enough.
>
> Jun --
>
> 10.  *With **more features, would each of those be controlled by a separate
> feature or*
>
> *multiple features. For example, is the new transaction record format*
>
> *controlled only by MV with TV having a dependency on MV or is it
> controlled*
>
> *by both MV and TV.*
>
>
> I think this will need to be decided on a case by case basis. There should
> be a mechanism to set dependencies among features.
> For transaction version specifically, I have no metadata version
> dependencies besides requiring 3.3 to write the feature records and use the
> feature tools. I would suspect all new features would have this
> requirement.
>
>
> 11. *Basically, if **--release-version is not used, the command will just
> use the latest*
>
> *production version of every feature. Should we apply that logic to both*
>
> *tools?*
>
>
> How would this work with the upgrade tool? I think we want a way to set a
> new feature version for one feature and not touch any of the others.
>
>
> *12. Should we remove --metadata METADATA from kafka-features? It does the*
>
> *same thing as --release-version.*
>
>
> When I previously discussed with Colin McCabe offline about this tool, he
> was strongly against deprecation or changing flags. I personally think it
> could good
>
> to unify and not support a ton of flags, but I would want to make sure he
> is aligned.
>
>
> *13. KIP-853 also extends the tools to support a new feature
> kraft.version.*
>
> *It would be useful to have alignment between that KIP and this one.*
>
>
> Sounds good. Looks like Jose is in on the discussion so we can continue
> here. :)
>
>
>
> Jose --
>
>
> *1. KIP-853 uses --feature for kafka-storage instead of --features.*
>
> *This is consistent with the use of --feature in the "kafka-feature.sh*
>
> *upgrade" command.*
>
>
> I wanted to include multiple features in one command, so it seems like
> features is a better name. I discuss more below about why I think we should
> allow setting multiple features at once.
>
>
> *2. I find it a bit inconsistent that --feature and --release-version*
>
> *are mutually exclusive in the kafka-feature CLI but not in the*
>
> *kafka-storage CLI. What is the reason for this decision?*
>
>
> For the storage tool, we are setting all the features for the cluster. By
> default, all are set. For the upgrade tool, the default is to set one
> feature. In the storage tool, it is natural for the --release-version to
> set the remaining features that --features didn't cover since otherwise we
> would need to set them all
>
> If we use the flag. In the feature upgrade case, it is less necessary for
> all the features to be set at once and the tool can be run multiple times.
> I'm not opposed to allowing both flags, but it is less necessary in my
> opinion.
>
>
> *3. KIP-853 deprecates --metadata in the kafka-features and makes it an*
>
> *alias for --release-version. In KIP-1022, what happens if the user*
>
> *specified both --metadata and --feature?*
>
>
> See my note above (Jun's comment 12) about deprecating old commands. I
> would think as the KIP stands now, we would not accept both commands.
>
>
> *4. I would suggest keeping this*
>
> *consistent with kafka-features. It would avoid having to implement one*
>
> *more parser in Kafka.*
>
>
> I sort of already implemented it as such, so I don't think it is too
> tricky. I'm not sure of an alternative. Kafka features currently only
> supports one feature at a time.
> I would like to support more than one for the storage tool. Do you have
> another suggestion for multiple features in the storage tool?
>
>
> *5. As currently described, trial and error seem to be the*
>
> *only mechanism. Should the Kafka documentation describe these*
>
> *dependencies? Is that good enough?*
>
>
> The plan so far is documentation. The idea is that this is an advanced
> feature, so I think it is reasonable to ask folks use documentation
>
>
> *6. Did you mean that 3.8-IV4 would map to TV2? If*
>
> *not, 3.8-IV3 would map to two different TV values.*
>
>
> It was a typo. Each MV maps to a single other feature version.
>
>
> *7. For --release-version in "kafka-features upgrade", does*
>
> *--release-version mean that all of the feature versions will either*
>
> *upgrade or stay the same? Meaning that downgrades will be rejected by*
>
> *the Kafka controller. How about when --release-version is used with*
>
> *"kafka-features downgrade"?*
>
>
> The idea I had was that the cluster will check if all the versions are
> supported. If any version is not supported the tool will throw an error. We
> can also issue a warning if the given command (if supported by the cluster)
> will downgrade a feature. One option is also to require a yes/no prompt or
> flag to allow downgrades. The downgrade tool would allow the same.
> Alternatively we could just fail the command if a feature is downgraded on
> upgrade command or vice versa. I don't have a strong preference.
>
>
> Thanks again for the discussion,
> Justine
>
> On Thu, Feb 29, 2024 at 10:44 AM José Armando García Sancio
> <jsan...@confluent.io.invalid> wrote:
>
> > Hi Justine and Jun,
> >
> > Thanks for the KIP Justine. See my comments below.
> >
> > On Wed, Feb 28, 2024 at 3:09 PM Jun Rao <j...@confluent.io.invalid>
> wrote:
> > > 13. KIP-853 also extends the tools to support a new feature
> > kraft.version.
> > > It would be useful to have alignment between that KIP and this one.
> >
> > I agree. I took a look at this KIP and these are the differences that
> > I can spot.
> >
> > 1. KIP-853 uses --feature for kafka-storage instead of --features.
> > This is consistent with the use of --feature in the "kafka-feature.sh
> > upgrade" command.
> >
> > 2. I find it a bit inconsistent that --feature and --release-version
> > are mutually exclusive in the kafka-feature CLI but not in the
> > kafka-storage CLI. What is the reason for this decision?
> >
> > 3. KIP-853 deprecates --metadata in the kafka-features and makes it an
> > alias for --release-version. In KIP-1022, what happens if the user
> > specified both --metadata and --feature?
> >
> > 4. There is an example: "kafka-storage format --features
> > metadata.version=16,transaction.version=2,group.coordinator.version=1".
> > This is different from the --feature flag in kafka-features which is
> > an append flag. Meaning that multiple features are specified as
> > "--feature metadata.version=16 --feature transaction.version=2
> > --feature group.coordinator.version=1". I would suggest keeping this
> > consistent with kafka-features. It would avoid having to implement one
> > more parser in Kafka.
> >
> > 5. In the section "A Note on Feature Interdependence", you mention "an
> > error should be thrown if trying to format with X version 13 and Y
> > version 12". How would the user discover (or describe) these
> > dependencies? As currently described, trial and error seem to be the
> > only mechanism. Should the Kafka documentation describe these
> > dependencies? Is that good enough?
> >
> > 6. In "3.8-IV2 that could map to TV1, 3.8-IV3 could also be TV1, and
> > 3.8-IV3 could be TV2" did you mean that 3.8-IV4 would map to TV2? If
> > not, 3.8-IV3 would map to two different TV values.
> >
> > 7. For --release-version in "kafka-features upgrade", does
> > --release-version mean that all of the feature versions will either
> > upgrade or stay the same? Meaning that downgrades will be rejected by
> > the Kafka controller. How about when --release-version is used with
> > "kafka-features downgrade"?
> >
> > -José
> >
>

Reply via email to