From d2d51fed474285b77c143e05adfc80e80d21997c Mon Sep 17 00:00:00 2001 From: JimmyWang6 Date: Thu, 21 Aug 2025 17:05:31 +0800 Subject: [PATCH 1/8] Consistency of command-line arguments for verifiable producer/consumer --- .../main/java/org/apache/kafka/tools/VerifiableConsumer.java | 4 ++-- .../main/java/org/apache/kafka/tools/VerifiableProducer.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java index 1fa1aed8c4f08..fc900fa8b624e 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java @@ -607,7 +607,7 @@ private static ArgumentParser argParser() { .dest("assignmentStrategy") .help(String.format("Set assignment strategy (e.g. %s); only used if the group protocol is %s", RoundRobinAssignor.class.getName(), GroupProtocol.CLASSIC.name())); - parser.addArgument("--consumer.config") + parser.addArgument("--command-config") .action(store()) .required(false) .type(String.class) @@ -621,7 +621,7 @@ public static VerifiableConsumer createFromArgs(ArgumentParser parser, String[] Namespace res = parser.parseArgs(args); boolean useAutoCommit = res.getBoolean("useAutoCommit"); - String configFile = res.getString("consumer.config"); + String configFile = res.getString("command-config"); String brokerHostAndPort = res.getString("bootstrapServer"); Properties consumerProps = new Properties(); diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java index 33f0b3142e8fd..150a2c599b42b 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java @@ -157,7 +157,7 @@ private static ArgumentParser argParser() { .metavar("ACKS") .help("Acks required on each produced message. See Kafka docs on acks for details."); - parser.addArgument("--producer.config") + parser.addArgument("--command-config") .action(store()) .required(false) .type(String.class) @@ -216,7 +216,7 @@ public static VerifiableProducer createFromArgs(ArgumentParser parser, String[] int maxMessages = res.getInt("maxMessages"); String topic = res.getString("topic"); int throughput = res.getInt("throughput"); - String configFile = res.getString("producer.config"); + String configFile = res.getString("command-config"); Integer valuePrefix = res.getInt("valuePrefix"); Long createTime = res.getLong("createTime"); Integer repeatingKeys = res.getInt("repeatingKeys"); From 211e9c5c233991ed9f9dc0dba77c3da8e8540feb Mon Sep 17 00:00:00 2001 From: JimmyWang6 Date: Mon, 25 Aug 2025 11:16:13 +0800 Subject: [PATCH 2/8] Consistency of command-line arguments for verifiable producer/consumer --- .../kafka/tools/VerifiableConsumer.java | 26 +++++++++++++++-- .../kafka/tools/VerifiableProducer.java | 29 ++++++++++++++++--- 2 files changed, 48 insertions(+), 7 deletions(-) diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java index fc900fa8b624e..54014c4b94ece 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java @@ -607,12 +607,21 @@ private static ArgumentParser argParser() { .dest("assignmentStrategy") .help(String.format("Set assignment strategy (e.g. %s); only used if the group protocol is %s", RoundRobinAssignor.class.getName(), GroupProtocol.CLASSIC.name())); - parser.addArgument("--command-config") + parser.addArgument("--consumer.config") .action(store()) .required(false) .type(String.class) .metavar("CONFIG_FILE") - .help("Consumer config properties file (config options shared with command line parameters will be overridden)."); + .help("(DEPRECATED) Consumer config properties file (config options shared with command line parameters will be overridden)." + + "This option will be removed in a future version. Use --command-config instead."); + + parser.addArgument("--command-config") + .action(store()) + .required(false) + .type(String.class) + .metavar("CONFIG-FILE") + .dest("commandConfigFile") + .help("Consumer config properties file."); return parser; } @@ -621,10 +630,14 @@ public static VerifiableConsumer createFromArgs(ArgumentParser parser, String[] Namespace res = parser.parseArgs(args); boolean useAutoCommit = res.getBoolean("useAutoCommit"); - String configFile = res.getString("command-config"); + String configFile = res.getString("consumer.config"); + String commandConfigFile = res.getString("command-config"); String brokerHostAndPort = res.getString("bootstrapServer"); Properties consumerProps = new Properties(); + if (configFile != null && commandConfigFile != null) { + throw new ArgumentParserException("Options --consumer.config and --command-config are mutually exclusive.", parser); + } if (configFile != null) { try { consumerProps.putAll(Utils.loadProps(configFile)); @@ -632,6 +645,13 @@ public static VerifiableConsumer createFromArgs(ArgumentParser parser, String[] throw new ArgumentParserException(e.getMessage(), parser); } } + if (res.getString(commandConfigFile) != null) { + try { + consumerProps.putAll(Utils.loadProps(res.getString(commandConfigFile))); + } catch (IOException e) { + throw new ArgumentParserException(e.getMessage(), parser); + } + } GroupProtocol groupProtocol = GroupProtocol.of(res.getString("groupProtocol")); consumerProps.put(ConsumerConfig.GROUP_PROTOCOL_CONFIG, groupProtocol.name()); diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java index 150a2c599b42b..70a0bfad7c6f9 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java @@ -157,12 +157,13 @@ private static ArgumentParser argParser() { .metavar("ACKS") .help("Acks required on each produced message. See Kafka docs on acks for details."); - parser.addArgument("--command-config") + parser.addArgument("--producer.config") .action(store()) .required(false) .type(String.class) .metavar("CONFIG_FILE") - .help("Producer config properties file."); + .help("(DEPRECATED) Producer config properties file. " + + "This option will be removed in a future version. Use --command-config instead."); parser.addArgument("--message-create-time") .action(store()) @@ -189,6 +190,14 @@ private static ArgumentParser argParser() { .dest("repeatingKeys") .help("If specified, each produced record will have a key starting at 0 increment by 1 up to the number specified (exclusive), then the key is set to 0 again"); + parser.addArgument("--command-config") + .action(store()) + .required(false) + .type(String.class) + .metavar("CONFIG-FILE") + .dest("commandConfigFile") + .help("Producer config properties file."); + return parser; } @@ -216,7 +225,8 @@ public static VerifiableProducer createFromArgs(ArgumentParser parser, String[] int maxMessages = res.getInt("maxMessages"); String topic = res.getString("topic"); int throughput = res.getInt("throughput"); - String configFile = res.getString("command-config"); + String configFile = res.getString("producer.config"); + String commandConfigFile = res.getString("commandConfigFile"); Integer valuePrefix = res.getInt("valuePrefix"); Long createTime = res.getLong("createTime"); Integer repeatingKeys = res.getInt("repeatingKeys"); @@ -240,14 +250,25 @@ public static VerifiableProducer createFromArgs(ArgumentParser parser, String[] producerProps.put(ProducerConfig.ACKS_CONFIG, Integer.toString(res.getInt("acks"))); // No producer retries producerProps.put(ProducerConfig.RETRIES_CONFIG, "0"); + if (configFile != null && commandConfigFile != null) { + throw new ArgumentParserException("Options --producer.config and --command-config are mutually exclusive.", parser); + } + if (configFile != null) { + System.out.println("Option --producer-config has been deprecated and will be removed in a future version. Use --command-config instead."); try { producerProps.putAll(loadProps(configFile)); } catch (IOException e) { throw new ArgumentParserException(e.getMessage(), parser); } } - + if (commandConfigFile != null) { + try { + producerProps.putAll(loadProps(commandConfigFile)); + } catch (IOException e) { + throw new ArgumentParserException(e.getMessage(), parser); + } + } StringSerializer serializer = new StringSerializer(); KafkaProducer producer = new KafkaProducer<>(producerProps, serializer, serializer); From 3863c853c54d894894d171e05e92a351547914b0 Mon Sep 17 00:00:00 2001 From: JimmyWang6 Date: Mon, 25 Aug 2025 11:39:45 +0800 Subject: [PATCH 3/8] Consistency of command-line arguments for verifiable producer/consumer --- tests/kafkatest/services/verifiable_client.py | 6 ++++-- tests/kafkatest/services/verifiable_consumer.py | 2 +- tests/kafkatest/services/verifiable_producer.py | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/tests/kafkatest/services/verifiable_client.py b/tests/kafkatest/services/verifiable_client.py index 16617d621aab1..9e076ade8e1f4 100644 --- a/tests/kafkatest/services/verifiable_client.py +++ b/tests/kafkatest/services/verifiable_client.py @@ -74,7 +74,8 @@ * `--enable-autocommit` * `--max-messages ` * `--assignment-strategy ` - * `--consumer.config ` - consumer config properties (typically empty) + * `--consumer.config ` - (DEPRECATED) consumer config properties (typically empty). This option will be removed in a future version. Use --command-config instead. + * `--command.config ` - consumer config properties Environment variables: * `LOG_DIR` - log output directory. Typically not needed if logs are written to stderr. @@ -97,7 +98,8 @@ * `--broker-list ` * `--max-messages ` * `--throughput ` - * `--producer.config ` - producer config properties (typically empty) + * `--producer.config ` - producer config properties (typically empty). This option will be removed in a future version. Use --command-config instead. + * `--command.config ` - producer config properties Environment variables: * `LOG_DIR` - log output directory. Typically not needed if logs are written to stderr. diff --git a/tests/kafkatest/services/verifiable_consumer.py b/tests/kafkatest/services/verifiable_consumer.py index 8264566f1c2b9..c65934c8f7754 100644 --- a/tests/kafkatest/services/verifiable_consumer.py +++ b/tests/kafkatest/services/verifiable_consumer.py @@ -424,7 +424,7 @@ def start_cmd(self, node): if self.max_messages > 0: cmd += " --max-messages %s" % str(self.max_messages) - cmd += " --consumer.config %s" % VerifiableConsumer.CONFIG_FILE + cmd += " --command.config %s" % VerifiableConsumer.CONFIG_FILE cmd += " 2>> %s | tee -a %s &" % (VerifiableConsumer.STDOUT_CAPTURE, VerifiableConsumer.STDOUT_CAPTURE) return cmd diff --git a/tests/kafkatest/services/verifiable_producer.py b/tests/kafkatest/services/verifiable_producer.py index e7a8f411f3a0e..9002adc5eea07 100644 --- a/tests/kafkatest/services/verifiable_producer.py +++ b/tests/kafkatest/services/verifiable_producer.py @@ -249,7 +249,7 @@ def start_cmd(self, node, idx): if self.repeating_keys is not None: cmd += " --repeating-keys %s " % str(self.repeating_keys) - cmd += " --producer.config %s" % VerifiableProducer.CONFIG_FILE + cmd += " --command.config %s" % VerifiableProducer.CONFIG_FILE cmd += " 2>> %s | tee -a %s &" % (VerifiableProducer.STDOUT_CAPTURE, VerifiableProducer.STDOUT_CAPTURE) return cmd From dc5135ea08e3213bd6eafebea806204b3f3468c3 Mon Sep 17 00:00:00 2001 From: JimmyWang6 Date: Mon, 25 Aug 2025 21:00:47 +0800 Subject: [PATCH 4/8] address comments --- tests/kafkatest/services/verifiable_client.py | 4 ++-- tests/kafkatest/services/verifiable_consumer.py | 2 +- tests/kafkatest/services/verifiable_producer.py | 2 +- .../java/org/apache/kafka/tools/VerifiableConsumer.java | 9 +++++---- .../java/org/apache/kafka/tools/VerifiableProducer.java | 7 ++++--- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/tests/kafkatest/services/verifiable_client.py b/tests/kafkatest/services/verifiable_client.py index 9e076ade8e1f4..557f689c0b018 100644 --- a/tests/kafkatest/services/verifiable_client.py +++ b/tests/kafkatest/services/verifiable_client.py @@ -75,7 +75,7 @@ * `--max-messages ` * `--assignment-strategy ` * `--consumer.config ` - (DEPRECATED) consumer config properties (typically empty). This option will be removed in a future version. Use --command-config instead. - * `--command.config ` - consumer config properties + * `--command-config ` - consumer config properties Environment variables: * `LOG_DIR` - log output directory. Typically not needed if logs are written to stderr. @@ -99,7 +99,7 @@ * `--max-messages ` * `--throughput ` * `--producer.config ` - producer config properties (typically empty). This option will be removed in a future version. Use --command-config instead. - * `--command.config ` - producer config properties + * `--command-config ` - producer config properties Environment variables: * `LOG_DIR` - log output directory. Typically not needed if logs are written to stderr. diff --git a/tests/kafkatest/services/verifiable_consumer.py b/tests/kafkatest/services/verifiable_consumer.py index c65934c8f7754..99c403ce190f0 100644 --- a/tests/kafkatest/services/verifiable_consumer.py +++ b/tests/kafkatest/services/verifiable_consumer.py @@ -424,7 +424,7 @@ def start_cmd(self, node): if self.max_messages > 0: cmd += " --max-messages %s" % str(self.max_messages) - cmd += " --command.config %s" % VerifiableConsumer.CONFIG_FILE + cmd += " --command-config %s" % VerifiableConsumer.CONFIG_FILE cmd += " 2>> %s | tee -a %s &" % (VerifiableConsumer.STDOUT_CAPTURE, VerifiableConsumer.STDOUT_CAPTURE) return cmd diff --git a/tests/kafkatest/services/verifiable_producer.py b/tests/kafkatest/services/verifiable_producer.py index 9002adc5eea07..049de4ce98619 100644 --- a/tests/kafkatest/services/verifiable_producer.py +++ b/tests/kafkatest/services/verifiable_producer.py @@ -249,7 +249,7 @@ def start_cmd(self, node, idx): if self.repeating_keys is not None: cmd += " --repeating-keys %s " % str(self.repeating_keys) - cmd += " --command.config %s" % VerifiableProducer.CONFIG_FILE + cmd += " --command-config %s" % VerifiableProducer.CONFIG_FILE cmd += " 2>> %s | tee -a %s &" % (VerifiableProducer.STDOUT_CAPTURE, VerifiableProducer.STDOUT_CAPTURE) return cmd diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java index 54014c4b94ece..25438bf35522b 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java @@ -611,7 +611,7 @@ private static ArgumentParser argParser() { .action(store()) .required(false) .type(String.class) - .metavar("CONFIG_FILE") + .metavar("CONFIG-FILE") .help("(DEPRECATED) Consumer config properties file (config options shared with command line parameters will be overridden)." + "This option will be removed in a future version. Use --command-config instead."); @@ -621,7 +621,7 @@ private static ArgumentParser argParser() { .type(String.class) .metavar("CONFIG-FILE") .dest("commandConfigFile") - .help("Consumer config properties file."); + .help("Config properties file."); return parser; } @@ -631,11 +631,12 @@ public static VerifiableConsumer createFromArgs(ArgumentParser parser, String[] boolean useAutoCommit = res.getBoolean("useAutoCommit"); String configFile = res.getString("consumer.config"); - String commandConfigFile = res.getString("command-config"); + String commandConfigFile = res.getString("commandConfigFile"); String brokerHostAndPort = res.getString("bootstrapServer"); Properties consumerProps = new Properties(); if (configFile != null && commandConfigFile != null) { + System.out.println("Option --consumer.config has been deprecated and will be removed in a future version. Use --command-config instead."); throw new ArgumentParserException("Options --consumer.config and --command-config are mutually exclusive.", parser); } if (configFile != null) { @@ -645,7 +646,7 @@ public static VerifiableConsumer createFromArgs(ArgumentParser parser, String[] throw new ArgumentParserException(e.getMessage(), parser); } } - if (res.getString(commandConfigFile) != null) { + if (commandConfigFile != null) { try { consumerProps.putAll(Utils.loadProps(res.getString(commandConfigFile))); } catch (IOException e) { diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java index 70a0bfad7c6f9..fcb59bc460ff3 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java @@ -161,7 +161,7 @@ private static ArgumentParser argParser() { .action(store()) .required(false) .type(String.class) - .metavar("CONFIG_FILE") + .metavar("CONFIG-FILE") .help("(DEPRECATED) Producer config properties file. " + "This option will be removed in a future version. Use --command-config instead."); @@ -196,7 +196,7 @@ private static ArgumentParser argParser() { .type(String.class) .metavar("CONFIG-FILE") .dest("commandConfigFile") - .help("Producer config properties file."); + .help("Config properties file."); return parser; } @@ -251,11 +251,12 @@ public static VerifiableProducer createFromArgs(ArgumentParser parser, String[] // No producer retries producerProps.put(ProducerConfig.RETRIES_CONFIG, "0"); if (configFile != null && commandConfigFile != null) { + System.out.println("Option --producer.config has been deprecated and will be removed in a future version. Use --command-config instead."); throw new ArgumentParserException("Options --producer.config and --command-config are mutually exclusive.", parser); } if (configFile != null) { - System.out.println("Option --producer-config has been deprecated and will be removed in a future version. Use --command-config instead."); + System.out.println("Option --producer.config has been deprecated and will be removed in a future version. Use --command-config instead."); try { producerProps.putAll(loadProps(configFile)); } catch (IOException e) { From 2aeb62aea7cd6b7e4c86f1c6bbd476b11b097850 Mon Sep 17 00:00:00 2001 From: JimmyWang6 Date: Mon, 25 Aug 2025 21:05:37 +0800 Subject: [PATCH 5/8] address comments --- tests/kafkatest/services/verifiable_client.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/kafkatest/services/verifiable_client.py b/tests/kafkatest/services/verifiable_client.py index 557f689c0b018..b6c192673282a 100644 --- a/tests/kafkatest/services/verifiable_client.py +++ b/tests/kafkatest/services/verifiable_client.py @@ -75,7 +75,7 @@ * `--max-messages ` * `--assignment-strategy ` * `--consumer.config ` - (DEPRECATED) consumer config properties (typically empty). This option will be removed in a future version. Use --command-config instead. - * `--command-config ` - consumer config properties + * `--command-config ` - command config properties Environment variables: * `LOG_DIR` - log output directory. Typically not needed if logs are written to stderr. @@ -99,7 +99,7 @@ * `--max-messages ` * `--throughput ` * `--producer.config ` - producer config properties (typically empty). This option will be removed in a future version. Use --command-config instead. - * `--command-config ` - producer config properties + * `--command-config ` - command config properties Environment variables: * `LOG_DIR` - log output directory. Typically not needed if logs are written to stderr. From f1096efed3c6be7ce8f3d61401a70dfbfd98bc75 Mon Sep 17 00:00:00 2001 From: JimmyWang6 Date: Tue, 26 Aug 2025 09:54:24 +0800 Subject: [PATCH 6/8] address comments --- .../main/java/org/apache/kafka/tools/VerifiableConsumer.java | 2 +- .../main/java/org/apache/kafka/tools/VerifiableProducer.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java index 25438bf35522b..14cd93af32d3d 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java @@ -636,10 +636,10 @@ public static VerifiableConsumer createFromArgs(ArgumentParser parser, String[] Properties consumerProps = new Properties(); if (configFile != null && commandConfigFile != null) { - System.out.println("Option --consumer.config has been deprecated and will be removed in a future version. Use --command-config instead."); throw new ArgumentParserException("Options --consumer.config and --command-config are mutually exclusive.", parser); } if (configFile != null) { + System.out.println("Option --consumer.config has been deprecated and will be removed in a future version. Use --command-config instead."); try { consumerProps.putAll(Utils.loadProps(configFile)); } catch (IOException e) { diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java index fcb59bc460ff3..2911d28b3f82b 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java @@ -251,7 +251,6 @@ public static VerifiableProducer createFromArgs(ArgumentParser parser, String[] // No producer retries producerProps.put(ProducerConfig.RETRIES_CONFIG, "0"); if (configFile != null && commandConfigFile != null) { - System.out.println("Option --producer.config has been deprecated and will be removed in a future version. Use --command-config instead."); throw new ArgumentParserException("Options --producer.config and --command-config are mutually exclusive.", parser); } From 17f087853666be697aaf6eb5fc33739b7c0dd446 Mon Sep 17 00:00:00 2001 From: JimmyWang6 Date: Wed, 27 Aug 2025 14:27:55 +0800 Subject: [PATCH 7/8] address comment --- .../java/org/apache/kafka/tools/VerifiableConsumer.java | 8 ++++---- .../java/org/apache/kafka/tools/VerifiableProducer.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java index 14cd93af32d3d..99eb094bfad05 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java @@ -597,7 +597,7 @@ private static ArgumentParser argParser() { .setDefault("earliest") .type(String.class) .dest("resetPolicy") - .help("Set reset policy (must be either 'earliest', 'latest', or 'none'"); + .help("Set reset policy (must be either 'earliest', 'latest', or 'none')"); parser.addArgument("--assignment-strategy") .action(store()) @@ -612,8 +612,8 @@ private static ArgumentParser argParser() { .required(false) .type(String.class) .metavar("CONFIG-FILE") - .help("(DEPRECATED) Consumer config properties file (config options shared with command line parameters will be overridden)." + - "This option will be removed in a future version. Use --command-config instead."); + .help("(DEPRECATED) Consumer config properties file" + + "This option will be removed in a future version. Use --command-config instead"); parser.addArgument("--command-config") .action(store()) @@ -621,7 +621,7 @@ private static ArgumentParser argParser() { .type(String.class) .metavar("CONFIG-FILE") .dest("commandConfigFile") - .help("Config properties file."); + .help("Config properties file (config options shared with command line parameters will be overridden)"); return parser; } diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java index 2911d28b3f82b..f94804490d0de 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java @@ -196,7 +196,7 @@ private static ArgumentParser argParser() { .type(String.class) .metavar("CONFIG-FILE") .dest("commandConfigFile") - .help("Config properties file."); + .help("Config properties file (config options shared with command line parameters will be overridden)"); return parser; } From ad7a696351369f0ab2e7a3f3e597dfee1dd52544 Mon Sep 17 00:00:00 2001 From: JimmyWang6 Date: Wed, 27 Aug 2025 14:45:20 +0800 Subject: [PATCH 8/8] fix typo --- .../main/java/org/apache/kafka/tools/VerifiableConsumer.java | 2 +- .../main/java/org/apache/kafka/tools/VerifiableProducer.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java index 99eb094bfad05..1ecea5331ddf8 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableConsumer.java @@ -621,7 +621,7 @@ private static ArgumentParser argParser() { .type(String.class) .metavar("CONFIG-FILE") .dest("commandConfigFile") - .help("Config properties file (config options shared with command line parameters will be overridden)"); + .help("Config properties file (config options shared with command line parameters will be overridden)."); return parser; } diff --git a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java index f94804490d0de..bfbbb8a485417 100644 --- a/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java +++ b/tools/src/main/java/org/apache/kafka/tools/VerifiableProducer.java @@ -196,7 +196,7 @@ private static ArgumentParser argParser() { .type(String.class) .metavar("CONFIG-FILE") .dest("commandConfigFile") - .help("Config properties file (config options shared with command line parameters will be overridden)"); + .help("Config properties file (config options shared with command line parameters will be overridden)."); return parser; }