You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by vik Dhawan <vi...@lexisnexis.com> on 2006/03/24 17:17:57 UTC

JMX exception

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)
--
View this message in context: http://www.nabble.com/JMX-exception-t1337321.html#a3574202
Sent from the ActiveMQ - Dev forum at Nabble.com.


Re: JMX exception

Posted by James Strachan <ja...@gmail.com>.
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 <vi...@lexisnexis.com> 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/

Re: JMX exception

Posted by vik Dhawan <vi...@lexisnexis.com>.
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.