This is an automated email from the ASF dual-hosted git repository.

schofielaj 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 8b955b54da9 MINOR: Wrapping exceptions in usage for groups and metrics 
utility (#19151)
8b955b54da9 is described below

commit 8b955b54da9f9577ee0b8784807635dda477fcf4
Author: Apoorv Mittal <[email protected]>
AuthorDate: Fri Mar 7 16:30:16 2025 +0000

    MINOR: Wrapping exceptions in usage for groups and metrics utility (#19151)
    
    If specified an invalid option then an exception trace appears with
    `kafka-client-metrics.sh` and `kafka-groups.sh` utilities. Then once has
    to explicitly remove the invalid argument and append `--help` to fetch
    correct options. The PR fixes below error message to one with `cause`
    and `usage`. This behaviour is similar to `kafka-console-consumer.sh`
    and `kafka-console-share-consumer.sh`
    
    Reviewers: Andrew Schofield <[email protected]>
---
 .../src/main/java/org/apache/kafka/tools/ClientMetricsCommand.java | 7 ++++++-
 tools/src/main/java/org/apache/kafka/tools/GroupsCommand.java      | 7 ++++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git 
a/tools/src/main/java/org/apache/kafka/tools/ClientMetricsCommand.java 
b/tools/src/main/java/org/apache/kafka/tools/ClientMetricsCommand.java
index 58c187ba50a..1010184eb01 100644
--- a/tools/src/main/java/org/apache/kafka/tools/ClientMetricsCommand.java
+++ b/tools/src/main/java/org/apache/kafka/tools/ClientMetricsCommand.java
@@ -49,6 +49,7 @@ import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import joptsimple.ArgumentAcceptingOptionSpec;
+import joptsimple.OptionException;
 import joptsimple.OptionSpec;
 import joptsimple.OptionSpecBuilder;
 
@@ -260,7 +261,11 @@ public class ClientMetricsCommand {
                 .ofType(String.class)
                 .withValuesSeparatedBy(',');
 
-            options = parser.parse(args);
+            try {
+                options = parser.parse(args);
+            } catch (OptionException oe) {
+                CommandLineUtils.printUsageAndExit(parser, oe.getMessage());
+            }
 
             checkArgs();
         }
diff --git a/tools/src/main/java/org/apache/kafka/tools/GroupsCommand.java 
b/tools/src/main/java/org/apache/kafka/tools/GroupsCommand.java
index 8f5046d6b8a..ec99a9e4c65 100644
--- a/tools/src/main/java/org/apache/kafka/tools/GroupsCommand.java
+++ b/tools/src/main/java/org/apache/kafka/tools/GroupsCommand.java
@@ -40,6 +40,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.stream.Stream;
 
 import joptsimple.ArgumentAcceptingOptionSpec;
+import joptsimple.OptionException;
 import joptsimple.OptionSpec;
 import joptsimple.OptionSpecBuilder;
 
@@ -217,7 +218,11 @@ public class GroupsCommand {
                             + "This matches group type 'consumer', and group 
type 'classic' where the protocol type is 'consumer' or empty.");
             shareOpt = parser.accepts("share", "Filter the groups to show 
share groups.");
 
-            options = parser.parse(args);
+            try {
+                options = parser.parse(args);
+            } catch (OptionException oe) {
+                CommandLineUtils.printUsageAndExit(parser, oe.getMessage());
+            }
 
             checkArgs();
         }

Reply via email to