java.lang.ClassCircularityError first time subscribe to jms
gray1 Jul 21, 2005 8:35 PMENVIRONMENT: Windows 2000 SP4, JBossAS-4.0.1 Final, JDK 1.4.2_08
(I have not yet verified if this problem occurs on later versions of JBoss as our product currently only supports 4.0.1)
DESCRIPTION
First time my client connects to my jms server to create two jms subscriptions in quick succession I get the following server-side error. Subsequent subscriptions to the same running server work fine.
Example 1
16:53:25,260 ERROR [SocketManager] Failed to handle: org.jboss.mq.il.uil2.msgs.ReceiveMsg13684176[msgType: m_receive, msgID: 9, error: null]
java.lang.ClassCircularityError: org/jboss/mq/selectors/Operator
at org.jboss.mq.selectors.SelectorParser.comparisonExpression(SelectorParser.java:288)
at org.jboss.mq.selectors.SelectorParser.conditionalExpression(SelectorParser.java:202)
at org.jboss.mq.selectors.SelectorParser.selectorFactor(SelectorParser.java:167)
at org.jboss.mq.selectors.SelectorParser.selectorTerm(SelectorParser.java:136)
at org.jboss.mq.selectors.SelectorParser.selectorExpression(SelectorParser.java:114)
at org.jboss.mq.selectors.SelectorParser.expression(SelectorParser.java:105)
at org.jboss.mq.selectors.SelectorParser.parse(SelectorParser.java:58)
at org.jboss.mq.selectors.SelectorParser.parse(SelectorParser.java:38)
at org.jboss.mq.selectors.Selector.(Selector.java:74)
at org.jboss.mq.Subscription.getSelector(Subscription.java:75)
at org.jboss.mq.server.BasicQueue.receive(BasicQueue.java:433)
at org.jboss.mq.server.JMSTopic.receive(JMSTopic.java:285)
at org.jboss.mq.server.ClientConsumer.receive(ClientConsumer.java:222)
at org.jboss.mq.server.JMSDestinationManager.receive(JMSDestinationManager.java:673)
at org.jboss.mq.server.JMSServerInterceptorSupport.receive(JMSServerInterceptorSupport.java:226)
at org.jboss.mq.security.ServerSecurityInterceptor.receive(ServerSecurityInterceptor.java:100)
at org.jboss.mq.server.TracingInterceptor.receive(TracingInterceptor.java:570)
at org.jboss.mq.server.JMSServerInvoker.receive(JMSServerInvoker.java:226)
at org.jboss.mq.il.uil2.ServerSocketManagerHandler.handleMsg(ServerSocketManagerHandler.java:149)
at org.jboss.mq.il.uil2.SocketManager$ReadTask.handleMsg(SocketManager.java:361)
at org.jboss.mq.il.uil2.msgs.BaseMsg.run(BaseMsg.java:377)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:748)
at java.lang.Thread.run(Thread.java:534)
Example 2
17:12:12,989 ERROR [SocketManager] Failed to handle: org.jboss.mq.il.uil2.msgs.ReceiveMsg13628909[msgType: m_receive, msgID: 9, error: null]
java.lang.ClassCircularityError: org/jboss/mq/selectors/Token
at org.jboss.mq.selectors.SelectorParser.(SelectorParser.java:1422)
at org.jboss.mq.selectors.SelectorParser.(SelectorParser.java:32)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
at java.lang.Class.newInstance0(Class.java:308)
at java.lang.Class.newInstance(Class.java:261)
at org.jboss.mq.selectors.Selector.(Selector.java:73)
at org.jboss.mq.Subscription.getSelector(Subscription.java:75)
at org.jboss.mq.server.BasicQueue.receive(BasicQueue.java:433)
at org.jboss.mq.server.JMSTopic.receive(JMSTopic.java:285)
at org.jboss.mq.server.ClientConsumer.receive(ClientConsumer.java:222)
at org.jboss.mq.server.JMSDestinationManager.receive(JMSDestinationManager.java:673)
at org.jboss.mq.server.JMSServerInterceptorSupport.receive(JMSServerInterceptorSupport.java:226)
at org.jboss.mq.security.ServerSecurityInterceptor.receive(ServerSecurityInterceptor.java:100)
at org.jboss.mq.server.TracingInterceptor.receive(TracingInterceptor.java:570)
at org.jboss.mq.server.JMSServerInvoker.receive(JMSServerInvoker.java:226)
at org.jboss.mq.il.uil2.ServerSocketManagerHandler.handleMsg(ServerSocketManagerHandler.java:149)
at org.jboss.mq.il.uil2.SocketManager$ReadTask.handleMsg(SocketManager.java:361)
at org.jboss.mq.il.uil2.msgs.BaseMsg.run(BaseMsg.java:377)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:748)
at java.lang.Thread.run(Thread.java:534)
Looks like some sort of mulit threaded classloading bug to me.
Interestingly if I slow my code down say by running it in debug mode and stepping through it there is no error. Its only if i run it at full speed it happens.
This bug is a problem for the first guy that logs on as there is NO CLIENT SIDE EXCEPTION thrown to indicate the connection was unsuccessful. As far as they are concerned they are listening to the topic but they arent really
I have posted this as bug http://jira.jboss.com/jira/browse/JBAS-2032