JMX exception

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

JMX exception

vik Dhawan
Hi,

I am running a JMX agent who saparate different kind of messages from 1 queue to the different work queues.

After running the process for a while i started getting following Exception.


javax.management.RuntimeMBeanException: RuntimeException thrown in operation removeMessage
        at com.sun.jmx.mbeanserver.StandardMetaDataImpl.wrapRuntimeException(StandardMetaDataImpl.java:994)
        at com.sun.jmx.mbeanserver.StandardMetaDataImpl.invoke(StandardMetaDataImpl.java:430)
        at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:815)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784)
        at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1408)
        at javax.management.remote.rmi.RMIConnectionImpl.access$100(RMIConnectionImpl.java:81)
        at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1245)
        at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1341)
        at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:782)
        at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
        at sun.rmi.transport.Transport$1.run(Transport.java:153)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
        at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
        at java.lang.Thread.run(Thread.java:595)
        at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
        at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
        at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126)
        at com.sun.jmx.remote.internal.PRef.invoke(Unknown Source)
        at javax.management.remote.rmi.RMIConnectionImpl_Stub.invoke(Unknown Source)
        at javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.invoke(RMIConnector.java:969)
        at com.lexisnexis.expresso.priorityschedular.schedular.Schedular.moveMessageToGrid(Schedular.java:553)
        at com.lexisnexis.expresso.priorityschedular.schedular.Schedular.run(Schedular.java:404)
        at com.lexisnexis.expresso.priorityschedular.schedular.Schedular.start(Schedular.java:189)
        at com.lexisnexis.expresso.priorityschedular.schedular.Schedular.main(Schedular.java:632)
Caused by: java.util.ConcurrentModificationException
        at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:617)
        at java.util.LinkedList$ListItr.remove(LinkedList.java:585)
        at org.apache.activemq.broker.region.Queue.removeMessage(Queue.java:471)
        at org.apache.activemq.broker.jmx.QueueView.removeMessage(QueueView.java:39)
        at sun.reflect.GeneratedMethodAccessor70.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at com.sun.jmx.mbeanserver.StandardMetaDataImpl.invoke(StandardMetaDataImpl.java:414)
        at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:815)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784)
        at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1408)
        at javax.management.remote.rmi.RMIConnectionImpl.access$100(RMIConnectionImpl.java:81)
        at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1245)
        at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1341)
        at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:782)
        at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
        at sun.rmi.transport.Transport$1.run(Transport.java:153)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
        at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
        at java.lang.Thread.run(Thread.java:595)
Reply | Threaded
Open this post in threaded view
|

Re: JMX exception

vik Dhawan
I looked at the code for method removeMessage() in the org.apache.activemq.broker.region.Queue Class. This code is removing a message from the fail-fast iterator obtained in the code.

It’s definitely a hot spot for "java.util.ConcurrentModificationException" what i am seeing.

I am not sure why developer of this code have chosen this implementation when its clearly written in Sun Collection Java docs for iterators.

I will really appreciate if some one can explain that.

Thanks!
 
Reply | Threaded
Open this post in threaded view
|

Re: JMX exception

James Strachan-2
I've just reviewed the code - there was one possible code path
(recovery) which could access the collection which was causing the
concurrent modification exception. All other accesses are within a
synchronized block so there is no possibility of the concurrent access
exception.

I wonder could you retry with SVN HEAD to see if you can still produce this?

James

On 3/24/06, vik Dhawan <[hidden email]> wrote:

>
> I looked at the code for method removeMessage() in the
> org.apache.activemq.broker.region.Queue Class. This code is removing a
> message from the fail-fast iterator obtained in the code.
>
> It's definitely a hot spot for "java.util.ConcurrentModificationException"
> what i am seeing.
>
> I am not sure why developer of this code have chosen this implementation
> when its clearly written in Sun Collection Java docs for iterators.
>
> I will really appreciate if some one can explain that.
>
> Thanks!
>
> --
> View this message in context: http://www.nabble.com/JMX-exception-t1337321.html#a3578256
> Sent from the ActiveMQ - Dev forum at Nabble.com.
>
>


--

James
-------
http://radio.weblogs.com/0112098/
Reply | Threaded
Open this post in threaded view
|

RE: JMX exception

vik Dhawan
In reply to this post by vik Dhawan
James,

Thanks for your help. I will look at the latest SVN HEAD and let you know.

Vik
-----Original Message-----
From: James Strachan [mailto:[hidden email]]
Sent: Thursday, March 30, 2006 4:17 AM
To: [hidden email]
Subject: Re: JMX exception

I've just reviewed the code - there was one possible code path
(recovery) which could access the collection which was causing the
concurrent modification exception. All other accesses are within a
synchronized block so there is no possibility of the concurrent access
exception.

I wonder could you retry with SVN HEAD to see if you can still produce this?

James

On 3/24/06, vik Dhawan <[hidden email]> wrote:

>
> I looked at the code for method removeMessage() in the
> org.apache.activemq.broker.region.Queue Class. This code is removing a
> message from the fail-fast iterator obtained in the code.
>
> It's definitely a hot spot for "java.util.ConcurrentModificationException"
> what i am seeing.
>
> I am not sure why developer of this code have chosen this implementation
> when its clearly written in Sun Collection Java docs for iterators.
>
> I will really appreciate if some one can explain that.
>
> Thanks!
>
> --
> View this message in context:
http://www.nabble.com/JMX-exception-t1337321.html#a3578256
> Sent from the ActiveMQ - Dev forum at Nabble.com.
>
>


--

James
-------
http://radio.weblogs.com/0112098/