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é