You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by js...@apache.org on 2022/06/07 18:25:55 UTC
[kafka] branch trunk updated: KAFKA-13410; Add a --release-version flag for storage-tool (#12245)
This is an automated email from the ASF dual-hosted git repository.
jsancio pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/trunk by this push:
new 806098ffe1 KAFKA-13410; Add a --release-version flag for storage-tool (#12245)
806098ffe1 is described below
commit 806098ffe1bd28e2ae12884a60f5bf14432b7e01
Author: David Arthur <mu...@gmail.com>
AuthorDate: Tue Jun 7 14:25:40 2022 -0400
KAFKA-13410; Add a --release-version flag for storage-tool (#12245)
This patch removes the --metadata-version and adds a --release-version to the kafka-storage tool. This change is not a breaking change since we are removing --metadata-version which was introduced on May 18, but it has not been released yet.
Reviewers: José Armando García Sancio <js...@users.noreply.github.com>, dengziming <de...@gmail.com>
---
core/src/main/scala/kafka/tools/StorageTool.scala | 12 ++++----
.../scala/unit/kafka/tools/StorageToolTest.scala | 32 +++++++++++++++-------
2 files changed, 28 insertions(+), 16 deletions(-)
diff --git a/core/src/main/scala/kafka/tools/StorageTool.scala b/core/src/main/scala/kafka/tools/StorageTool.scala
index 9b78faf6ed..333af86314 100644
--- a/core/src/main/scala/kafka/tools/StorageTool.scala
+++ b/core/src/main/scala/kafka/tools/StorageTool.scala
@@ -97,9 +97,9 @@ object StorageTool extends Logging {
help("The cluster ID to use.")
formatParser.addArgument("--ignore-formatted", "-g").
action(storeTrue())
- formatParser.addArgument("--metadata-version", "-v").
+ formatParser.addArgument("--release-version", "-r").
action(store()).
- help(s"The initial metadata.version to use. Default is (${MetadataVersion.latest().featureLevel()}).")
+ help(s"A release version to use for the initial metadata.version. The default is (${MetadataVersion.latest().version()})")
parser.parseArgsOrFail(args)
}
@@ -114,9 +114,9 @@ object StorageTool extends Logging {
def configToSelfManagedMode(config: KafkaConfig): Boolean = config.processRoles.nonEmpty
def getMetadataVersion(namespace: Namespace): MetadataVersion = {
- Option(namespace.getString("metadata_version")).
- map(mv => MetadataVersion.fromFeatureLevel(mv.toShort)).
- getOrElse(MetadataVersion.latest())
+ Option(namespace.getString("release_version"))
+ .map(ver => MetadataVersion.fromVersionString(ver))
+ .getOrElse(MetadataVersion.latest())
}
def infoCommand(stream: PrintStream, selfManagedMode: Boolean, directories: Seq[String]): Int = {
@@ -256,7 +256,7 @@ object StorageTool extends Logging {
val bootstrapMetadata = BootstrapMetadata.create(metadataVersion)
BootstrapMetadata.write(bootstrapMetadata, Paths.get(directory))
- stream.println(s"Formatting ${directory}")
+ stream.println(s"Formatting ${directory} with metadata.version ${metadataVersion}.")
})
0
}
diff --git a/core/src/test/scala/unit/kafka/tools/StorageToolTest.scala b/core/src/test/scala/unit/kafka/tools/StorageToolTest.scala
index 9f75031341..0e11471527 100644
--- a/core/src/test/scala/unit/kafka/tools/StorageToolTest.scala
+++ b/core/src/test/scala/unit/kafka/tools/StorageToolTest.scala
@@ -22,14 +22,15 @@ import java.nio.charset.StandardCharsets
import java.nio.file.Files
import java.util
import java.util.Properties
-
import kafka.server.{KafkaConfig, MetaProperties}
import kafka.utils.TestUtils
import org.apache.kafka.common.utils.Utils
import org.apache.kafka.server.common.MetadataVersion
-import org.junit.jupiter.api.Assertions.{assertEquals, assertThrows}
+import org.junit.jupiter.api.Assertions.{assertEquals, assertThrows, assertTrue}
import org.junit.jupiter.api.{Test, Timeout}
+import scala.collection.mutable
+
@Timeout(value = 40)
class StorageToolTest {
@@ -162,7 +163,7 @@ Found problem:
val stream = new ByteArrayOutputStream()
assertEquals(0, StorageTool.
formatCommand(new PrintStream(stream), Seq(tempDir.toString), metaProperties, MetadataVersion.latest(), ignoreFormatted = false))
- assertEquals("Formatting %s%n".format(tempDir), stream.toString())
+ assertTrue(stream.toString().startsWith("Formatting %s".format(tempDir)))
try assertEquals(1, StorageTool.
formatCommand(new PrintStream(new ByteArrayOutputStream()), Seq(tempDir.toString), metaProperties, MetadataVersion.latest(), ignoreFormatted = false)) catch {
@@ -189,16 +190,27 @@ Found problem:
@Test
def testDefaultMetadataVersion(): Unit = {
- var namespace = StorageTool.parseArguments(Array("format", "-c", "config.props", "-t", "XcZZOzUqS4yHOjhMQB6JLQ"))
- var mv = StorageTool.getMetadataVersion(namespace)
+ val namespace = StorageTool.parseArguments(Array("format", "-c", "config.props", "-t", "XcZZOzUqS4yHOjhMQB6JLQ"))
+ val mv = StorageTool.getMetadataVersion(namespace)
assertEquals(MetadataVersion.latest().featureLevel(), mv.featureLevel(),
"Expected the default metadata.version to be the latest version")
+ }
- namespace = StorageTool.parseArguments(Array("format", "-c", "config.props",
- "--metadata-version", MetadataVersion.latest().featureLevel().toString, "-t", "XcZZOzUqS4yHOjhMQB6JLQ"))
- mv = StorageTool.getMetadataVersion(namespace)
- assertEquals(MetadataVersion.latest().featureLevel(), mv.featureLevel(),
- "Expected the default metadata.version to be the latest version")
+ @Test
+ def testMetadataVersionFlags(): Unit = {
+ def parseMetadataVersion(strings: String*): MetadataVersion = {
+ var args = mutable.Seq("format", "-c", "config.props", "-t", "XcZZOzUqS4yHOjhMQB6JLQ")
+ args ++= strings
+ val namespace = StorageTool.parseArguments(args.toArray)
+ StorageTool.getMetadataVersion(namespace)
+ }
+
+ var mv = parseMetadataVersion("--release-version", "3.0")
+ assertEquals("3.0", mv.shortVersion())
+
+ mv = parseMetadataVersion("--release-version", "3.0-IV1")
+ assertEquals(MetadataVersion.IBP_3_0_IV1, mv)
+ assertThrows(classOf[IllegalArgumentException], () => parseMetadataVersion("--release-version", "0.0"))
}
}