[ 
https://issues.apache.org/jira/browse/UIMA-1807?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jerry Cwiklik closed UIMA-1807.
-------------------------------

    Resolution: Fixed

Modified UIMA AS service to store CM's unique key in ServiceInfoMBean. This key 
is used by JMX Monitor to lookup CM Cas Pool MBean in JMX registry.   

> UIMA AS jmx monitor throws javax.management.AttributeNotFoundException while 
> collecting stats
> ---------------------------------------------------------------------------------------------
>
>                 Key: UIMA-1807
>                 URL: https://issues.apache.org/jira/browse/UIMA-1807
>             Project: UIMA
>          Issue Type: Bug
>          Components: Async Scaleout
>    Affects Versions: 2.3AS
>            Reporter: Jerry Cwiklik
>            Assignee: Jerry Cwiklik
>
> When initializing, the UIMA AS JMX monitor fetches and caches references to 
> UIMA MBeans to be used later to collect stats. It seems that the CM delegate 
> key, contained in ServiceInfoMBean is bad and subsequent JMX lookup returns 
> an invalid proxy reference to the CM Cas Pool. The exception:
> java.lang.reflect.UndeclaredThrowableException
>       at $Proxy10.getAvailableInstances(Unknown Source)
>       at 
> org.apache.uima.aae.jmx.monitor.JmxMonitor.collectStats(JmxMonitor.java:421)
>       at org.apache.uima.aae.jmx.monitor.JmxMonitor.run(JmxMonitor.java:540)
>       at java.lang.Thread.run(Thread.java:619)
> Caused by: javax.management.AttributeNotFoundException: No such attribute: 
> AvailableInstances
>       at 
> com.sun.jmx.mbeanserver.PerInterface.getAttribute(PerInterface.java:63)
>       at 
> com.sun.jmx.mbeanserver.MBeanSupport.getAttribute(MBeanSupport.java:216)
>       at 
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:666)
>       at 
> com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638)
>       at 
> javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1403)
>       at 
> javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
>       at 
> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1264)
>       at 
> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1359)
>       at 
> javax.management.remote.rmi.RMIConnectionImpl.getAttribute(RMIConnectionImpl.java:600)
>       at sun.reflect.GeneratedMethodAccessor200.invoke(Unknown Source)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:597)
>       at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
>       at sun.rmi.transport.Transport$1.run(Transport.java:159)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
>       at 
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
>       at 
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
>       at 
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>       at java.lang.Thread.run(Thread.java:619)
>       at 
> sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
>       at 
> sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
>       at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
>       at com.sun.jmx.remote.internal.PRef.invoke(Unknown Source)
>       at 
> javax.management.remote.rmi.RMIConnectionImpl_Stub.getAttribute(Unknown 
> Source)
>       at 
> javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.getAttribute(RMIConnector.java:878)
>       at 
> javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:263)
>       ... 4 more
> is logged and the CM is excluded from monitor output. This is broken since 
> we've put in support for multiple colocated Cas Multipliers. To support that 
> each CM is assigned a unique key to distinguish from other CMs. A UUID-like 
> string is added to a delegate key for the CM MBean name. Delegate keys are 
> *not* unique and it is possible to have more than one with the same key. 
> However, the monitor still uses the delegate key to fetch the CM MBean but 
> such MBean does not exist leading to the problem.
>  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to