From 297e69b25c68659cd31ad79f622f65c5f25aeb04 Mon Sep 17 00:00:00 2001 From: Manikumar Reddy Date: Tue, 11 Jul 2023 21:48:37 +0530 Subject: [PATCH] MINOR: Fix Jmxtool to honour wait option when MBean is not yet avaibale in MBean server --- .../main/java/org/apache/kafka/tools/JmxTool.java | 2 +- .../java/org/apache/kafka/tools/JmxToolTest.java | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/tools/src/main/java/org/apache/kafka/tools/JmxTool.java b/tools/src/main/java/org/apache/kafka/tools/JmxTool.java index 8347bffed3a3e..63e95e6b52313 100644 --- a/tools/src/main/java/org/apache/kafka/tools/JmxTool.java +++ b/tools/src/main/java/org/apache/kafka/tools/JmxTool.java @@ -169,7 +169,7 @@ private static Set findObjects(JmxToolOptions options, long waitTimeoutMs = 10_000; Set result = new HashSet<>(); Set querySet = new HashSet<>(queries); - BiPredicate, Set> foundAllObjects = Set::containsAll; + BiPredicate, Set> foundAllObjects = Set::equals; long start = System.currentTimeMillis(); do { if (!result.isEmpty()) { diff --git a/tools/src/test/java/org/apache/kafka/tools/JmxToolTest.java b/tools/src/test/java/org/apache/kafka/tools/JmxToolTest.java index f936d3d094ee4..b789d75fae5b6 100644 --- a/tools/src/test/java/org/apache/kafka/tools/JmxToolTest.java +++ b/tools/src/test/java/org/apache/kafka/tools/JmxToolTest.java @@ -337,6 +337,19 @@ public void dateFormat() { assertTrue(validDateFormat(dateFormat, csv.get("time"))); } + @Test + public void unknownObjectName() { + String[] args = new String[]{ + "--jmx-url", jmxUrl, + "--object-name", "kafka.server:type=DummyMetrics,name=MessagesInPerSec", + "--wait" + }; + + String err = executeAndGetErr(args); + assertCommandFailure(); + assertTrue(err.contains("Could not find all requested object names after 10000 ms")); + } + private static int findRandomOpenPortOnAllLocalInterfaces() throws Exception { try (ServerSocket socket = new ServerSocket(0)) { return socket.getLocalPort();