Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 1142318

Summary: JON fails to show JVM Memory Pools metrics while plugin container is restarting
Product: [JBoss] JBoss Operations Network Reporter: Jan Bednarik <jbednari>
Component: Monitoring -- OtherAssignee: RHQ Project Maintainer <rhq-maint>
Status: CLOSED WONTFIX QA Contact: Mike Foley <mfoley>
Severity: medium Docs Contact:
Priority: unspecified    
Version: JON 3.3.0CC: mkoci, tsegismo
Target Milestone: ---   
Target Release: JON 3.3.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-09-19 16:44:12 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:
Attachments:
Description Flags
server.log none

Description Jan Bednarik 2014-09-16 14:53:20 UTC
Created attachment 938061 [details]
server.log

Description of problem:
When a user attempts to view RHQ agent's Memory Pools metrics while plugin container is being restarted, the JON fails to render metrics and throws following exeption:

java.lang.RuntimeException:[1410876311082] javax.ejb.EJBException:java.lang.reflect.UndeclaredThrowableException -> java.lang.reflect.UndeclaredThrowableException:null -> java.lang.NoSuchMethodException:There is no remote POJO that can service the method invocation request. Command: Command: type=[remotepojo]; cmd-in-response=[false]; config=[{rhq.security-token=bKLQV6TXWrPgV9fxQMrgrmKNbZ0K0lDpmPf83YiVGBbWpjlmRBiEkXjjkCDfYWK24gk=, rhq.send-throttle=true}]; params=[{targetInterfaceName=org.rhq.core.clientapi.agent.measurement.MeasurementAgentService, invocation=NameBasedInvocation[getRealTimeMeasurementValue]}] 
--- STACK TRACE FOLLOWS ---
[1410876311082] javax.ejb.EJBException:java.lang.reflect.UndeclaredThrowableException -> java.lang.reflect.UndeclaredThrowableException:null -> java.lang.NoSuchMethodException:There is no remote POJO that can service the method invocation request. Command: Command: type=[remotepojo]; cmd-in-response=[false]; config=[{rhq.security-token=bKLQV6TXWrPgV9fxQMrgrmKNbZ0K0lDpmPf83YiVGBbWpjlmRBiEkXjjkCDfYWK24gk=, rhq.send-throttle=true}]; params=[{targetInterfaceName=org.rhq.core.clientapi.agent.measurement.MeasurementAgentService, invocation=NameBasedInvocation[getRealTimeMeasurementValue]}] 
   at Unknown.RuntimeException_0(Unknown Source)
   at Unknown.instantiate_32(Unknown Source)
   at Unknown.$instantiate_0(Unknown Source)
   at Unknown.$instantiate(Unknown Source)
   at Unknown.$readObject(Unknown Source)
   at Unknown.$onResponseReceived(Unknown Source)
   at Unknown.onResponseReceived_4(Unknown Source)
   at Unknown.$fireOnResponseReceived(Unknown Source)
   at Unknown.onReadyStateChange_0(Unknown Source)
   at Unknown.$setOnReadyStateChange/this$static.onreadystatechange<(Unknown Source)
   at Unknown.apply(Unknown Source)
   at Unknown.entry0(Unknown Source)
   at Unknown.entry_0/<(Unknown Source)
   at Unknown.anonymous(Unknown Source)

Version-Release number of selected component (if applicable):
JON 3.3.0 ER 02

How reproducible:
always

Steps to Reproduce:
1. Install JON 3.3.0 ER02 server.
2. Run operation Restart plugin container on RHQ agent resource.
3. While the operation is running (it takes aprox. 5 - 20 seconds) try to view PS Perm Gen metric (RHQ Agent -> JVM -> Memory Subsystem -> Memory Pools -> PS Perm Gen)

Actual results:
UI shows no metrics and the error message Cannot load metrics is logged in MEssage center. The excpetion (see above, see attached server.log file) is logged in server.log.

Expected results:
Metrics are shown and no error message is logged.

Additional info:
After the operation is finished, the metrics successfully render again.

Comment 1 Thomas Segismont 2014-09-19 16:44:12 UTC
Here's what MeasurementDataManagerBean#findLiveData does when the agent cannot be reached:

============
try {
    AgentClient ac = agentClientManager.getAgentClient(agent);
    result = ac.getMeasurementAgentService(timeout).getRealTimeMeasurementValue(resourceId, requests);

} catch (RuntimeException e) {
    if (e instanceof CannotConnectException //
        || (null != e.getCause() && (e.getCause() instanceof TimeoutException))) {

        // ignore timeouts and connect issue,  just return an empty result and keep the logs clean
    } else {
        throw e;
    }
}
============

So when it's down (stopped), no error will be shown, and the live data column will be empty.

In your case, the cause is "NoSuchMethodException". This is because the agent is reachable, but the agent service is not started (yet).

This is really an edge case, and the test case is a bit convoluted, so closing as WONTFIX.