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 8347bffed3a..63e95e6b523 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 @@ public class JmxTool { 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 f936d3d094e..b789d75fae5 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 class JmxToolTest { 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();