jolshan commented on code in PR #15685:
URL: https://github.com/apache/kafka/pull/15685#discussion_r1612404062
##########
core/src/main/scala/kafka/tools/StorageTool.scala:
##########
@@ -109,6 +111,52 @@ object StorageTool extends Logging {
}
}
+ private def validateMetadataVersion(metadataVersion: MetadataVersion,
config: Option[KafkaConfig]): Unit = {
+ if (!metadataVersion.isKRaftSupported) {
+ throw new TerseFailure(s"Must specify a valid KRaft metadata.version of
at least ${MetadataVersion.IBP_3_0_IV0}.")
+ }
+ if (!metadataVersion.isProduction) {
+ if (config.get.unstableMetadataVersionsEnabled) {
+ System.out.println(s"WARNING: using pre-production metadata.version
$metadataVersion.")
+ } else {
+ throw new TerseFailure(s"The metadata.version $metadataVersion is not
ready for production use yet.")
+ }
+ }
+ }
+
+ private[tools] def generateFeatureRecords(metadataRecords:
ArrayBuffer[ApiMessageAndVersion],
+ metadataVersion: MetadataVersion,
+ specifiedFeatures: Map[String,
java.lang.Short],
+ allFeatures: List[Features],
+ usesVersionDefault: Boolean): Unit
= {
+ // If we are using --version-default, the default is based on the metadata
version.
+ val metadataVersionForDefault = if (usesVersionDefault)
Optional.of(metadataVersion) else Optional.empty[MetadataVersion]()
Review Comment:
Ok sorry to be a little all over the place here. I think we should have
semantics where on each new feature version released to production, we have a
MV released to production.
In this case, whether we specify latest production (as it did before) or use
an empty optional to specify the latest production feature SHOULD be
equivalent. The only case it is not is if someone improperly doesn't set the
metadataMapping correctly. There isn't a great way to enforce that (I can do so
via a test), but I guess the question is whether we prefer the empty approach
that ensures the latest features are provided OR if we prefer the latest
production metadata approach that is simpler but may risk not picking up
features if folks implement the method incorrectly/don't update the MV.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]