Bug 856374

Summary: JMX Plugin - Unsupported key type: Legacy
Product: [JBoss] JBoss Operations Network Reporter: Simeon Pinder <spinder>
Component: Plugin -- OtherAssignee: Simeon Pinder <spinder>
Status: CLOSED CURRENTRELEASE QA Contact: Mike Foley <mfoley>
Severity: medium Docs Contact:
Priority: high    
Version: JON 3.1.1CC: genman, hrupp, myarboro, spinder
Target Milestone: ---   
Target Release: JON 3.1.2   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 839087 Environment:
Last Closed: 2013-09-11 11:04:40 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 839087    
Bug Blocks:    

Description Simeon Pinder 2012-09-11 22:23:38 UTC
+++ This bug was initially created as a clone of Bug #839087 +++

Description of problem:

If the process command line does not include the main class name (i.e. it was truncated) then the following may occur with the JMX plugin:

2012-07-10 21:39:22,315 DEBUG [ResourceDiscoveryComponent.invoker.daemon-1] (org.rhq.plugins.jmx.JMXDiscoveryComponent)- JMX service URL for java process [pro
cess: pid=[22589], name=[/usr/java/default/bin/java], ppid=[1]] is [service:jmx:rmi:///jndi/rmi://127.0.0.1:8013/jmxrmi].
2012-07-10 21:39:22,316 DEBUG [ResourceDiscoveryComponent.invoker.daemon-1] (org.rhq.plugins.jmx.JMXDiscoveryComponent)- Using JMX remoting port [8013] as Resource key...
2012-07-10 21:39:22,316 DEBUG [ResourceDiscoveryComponent.invoker.daemon-1] (org.rhq.plugins.jmx.JMXDiscoveryComponent)- Error when trying to discover JVM pro
cess [ProcessScanResult: scan=[ProcessScan: query=[process|basename|match=^java.*,arg|-cp|match=.*/.../.*], name=[...]], info=[process: pid=[22589],
 name=[/usr/java/default/bin/java], ppid=[1]]].
java.lang.IllegalStateException: Unsupported key type: Legacy
        at org.rhq.plugins.jmx.JMXDiscoveryComponent.buildResourceName(JMXDiscoveryComponent.java:520)
        at org.rhq.plugins.jmx.JMXDiscoveryComponent.buildResourceDetails(JMXDiscoveryComponent.java:424)
        at org.rhq.plugins.jmx.JMXDiscoveryComponent.discoverResourceDetails(JMXDiscoveryComponent.java:415)
        at org.rhq.plugins.jmx.JMXDiscoveryComponent.discoverResources(JMXDiscoveryComponent.java:132)



Version-Release number of selected component (if applicable):

5.4

How reproducible:

Always

Steps to Reproduce:
1. Create a command line that does not include a main class but includes a JMX port
2. Attempt to 'discover' this resource


Fix:

diff --git a/modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/JMXDiscoveryComponent.java b/modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/JMXDisco
index f0a4f98..1937092 100644
--- a/modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/JMXDiscoveryComponent.java
+++ b/modules/plugins/jmx/src/main/java/org/rhq/plugins/jmx/JMXDiscoveryComponent.java
@@ -512,6 +512,9 @@ public class JMXDiscoveryComponent implements ResourceDiscoveryComponent, Manual
         }
 
         switch (key.getType()) {
+            case Legacy:
+                // implies main classname was not found
+                name.append(key.getJmxRemotingPort()); break;
             case JmxRemotingPort:
                 name.append(':').append(key.getJmxRemotingPort()); break;
             case Explicit:

... I haven't tested this yet though

--- Additional comment from spinder on 2012-09-11 18:22:10 EDT ---

Hi Elias,

  This diff does solve the issue and I applied the diff with you as the committer.

This is fixed in master with commits:
ad3c40c0812d747
c431e51a08fbb69
1d4e0d12dc0d013

Comment 1 Simeon Pinder 2012-09-11 22:25:52 UTC
These fixes should be applied to the appropriate release branches.  Discovery of the JMX server instances will fail if the main class name is not found.

Comment 2 Simeon Pinder 2012-11-30 20:59:37 UTC
This is checked into the release/jon3.1.x branch with commits:
fbb56423a291d67900
10b02ff05c15e2cdf3

See BZ(https://bugzilla.redhat.com/show_bug.cgi?id=839087) for original commits and details description.

Moving this to MODIFIED awaiting a new ER build.

Comment 3 Simeon Pinder 2012-12-07 06:31:39 UTC
Moving to ON_QA as available for testing in ER3 or greater: https://brewweb.devel.redhat.com/buildinfo?buildID=246689

Comment 4 Mike Foley 2013-01-14 23:36:59 UTC
discussed with spinder.  this is not easily independtly QA'able.  QE has regression tested ALL the plugins for JON 3.1.2 ... which regression tests this change.  Based on having regression tested ALL plugins ... and having sign-offs from all QE leads in RH Middleware with a JON plugin ... I am marking this verified.