kamalcph opened a new pull request, #13060:
URL: https://github.com/apache/kafka/pull/13060

   JMX tool doesn't handle the object names with wild card. The below 
exceptions are thrown:
   
   ❯ sh kafka-run-class.sh kafka.tools.JmxTool --jmx-url 
service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi --object-name 
kafka.server:type=BrokerTopicMetrics,*
   ```
    Trying to connect to JMX url: 
service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi.
   Exception in thread "main" java.lang.NullPointerException
        at kafka.tools.JmxTool$.main(JmxTool.scala:194)
        at kafka.tools.JmxTool.main(JmxTool.scala)
   ```
   
   ❯ sh kafka-run-class.sh kafka.tools.JmxTool --jmx-url 
service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi --object-name 
kafka.server:type=BrokerTopicMetrics,* --attributes Count,FifteenMinuteRate 
   ```
   Trying to connect to JMX url: 
service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi. Exception in thread "main" 
java.lang.NullPointerException
        at kafka.tools.JmxTool$.queryAttributes(JmxTool.scala:254)
        at kafka.tools.JmxTool$.main(JmxTool.scala:214)
        at kafka.tools.JmxTool.main(JmxTool.scala)
   ```
   
   Since JMX tool is not covered with tests, verified the patch with the below 
combinations:
   
   **Specific MBean name**
   ```
   ❯ sh kafka-run-class.sh kafka.tools.JmxTool --jmx-url 
service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi --object-name 
kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec
   ❯ sh kafka-run-class.sh kafka.tools.JmxTool --jmx-url 
service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi --object-name 
kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec --attributes 
Count,FifteenMinuteRate 
   ❯ sh kafka-run-class.sh kafka.tools.JmxTool --jmx-url 
service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi --object-name 
kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec --object-name 
kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec 
   ❯ sh kafka-run-class.sh kafka.tools.JmxTool --jmx-url 
service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi --object-name 
kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec --object-name 
kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec --attributes 
Count,FifteenMinuteRate
   
   ```
   **Domain Pattern** (not supported -- throws java.lang.NoClassDefFoundError: 
kafka/log/LogSegments$ -- needs further fix) 
   ```
   ❯ sh kafka-run-class.sh kafka.tools.JmxTool --jmx-url 
service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi --object-name kafka.*:* 
   ❯ sh kafka-run-class.sh kafka.tools.JmxTool --jmx-url 
service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi --object-name kafka.*:* 
--attributes Count,FifteenMinuteRate
   ```
   
   **Property List pattern**
   ```
   ❯ sh kafka-run-class.sh kafka.tools.JmxTool --jmx-url 
service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi --object-name 
kafka.server:type=BrokerTopicMetrics,* 
   ❯ sh kafka-run-class.sh kafka.tools.JmxTool --jmx-url 
service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi --object-name 
kafka.server:type=BrokerTopicMetrics,* --attributes Count,FifteenMinuteRate
   
   ```
   **Property Value pattern**
   ```
   ❯ sh kafka-run-class.sh kafka.tools.JmxTool --jmx-url 
service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi --object-name 
kafka.server:type=BrokerTopicMetrics,name=*InPerSec 
   ❯ sh kafka-run-class.sh kafka.tools.JmxTool --jmx-url 
service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi --object-name 
kafka.server:type=BrokerTopicMetrics,name=*InPerSec --attributes 
Count,FifteenMinuteRate
   
   ```
   **Property pattern: (combination of list & value patterns)** 
   ```
   ❯ sh kafka-run-class.sh kafka.tools.JmxTool --jmx-url 
service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi --object-name 
kafka.server:type=*,* 
   ❯ sh kafka-run-class.sh kafka.tools.JmxTool --jmx-url 
service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi --object-name 
kafka.server:type=*,* --attributes Count,FifteenMinuteRate
   
   ```
   
   ### Committer Checklist (excluded from commit message)
   - [ ] Verify design and implementation 
   - [ ] Verify test coverage and CI build status
   - [ ] Verify documentation (including upgrade notes)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to