[jboss-user] [JBoss Messaging] - MDB deployment causes connection timeout error

alllle do-not-reply at jboss.com
Wed Jan 31 16:16:23 EST 2007


JBoss 4.0.4GA + Messaging 1.0.1SP2

I created a simple MDB that listen to a topic. When deployed, it all looks okay. But about 30 seconds later after the deployment, the JBoss console dumps out an warning message followed by error stack trace. It seems that the messaging service is trying to close a connection that it thinks has been out for too long. Then it errors out with a "Failed to obtain lock" when trying to close the connection. 

The output:

  | 14:58:46,340 INFO  server.Server - JBoss (MX MicroKernel) [4.0.4.GA (build: CVSTag=JBoss_4_0_4_GA date=200605151000)] Started in 38s:167ms
  | 14:59:21,133 WARN  connectionmanager.SimpleConnectionManager - A problem has been detected with the connection to remote client 4co2mt-16t2uo-exm8rsfy-1-exm8s4c4-5. It is possible the client has exited without closing its connection(s) or there is a network problem. All connection resources corresponding to that client process will now be removed.
  | 
  | 14:59:21,153 ERROR util.ExceptionUtil - ConsumerEndpoint[-2147483628] close [4co2mt-16t2uo-exm8rsfy-1-exm8t0on-h]
  | java.lang.RuntimeException: Failed to obtain lock
  |         at org.jboss.messaging.core.local.PointToMultipointRouter.remove(PointToMultipointRouter.java:166)
  |         at org.jboss.messaging.core.local.Topic.remove(Topic.java:126)
  |         at org.jboss.messaging.core.local.CoreSubscription.disconnect(CoreSubscription.java:111)
  |         at org.jboss.jms.server.endpoint.ServerConsumerEndpoint.close(ServerConsumerEndpoint.java:360)
  |         at org.jboss.jms.server.endpoint.ServerConsumerEndpoint.remove(ServerConsumerEndpoint.java:543)
  |         at org.jboss.jms.server.endpoint.ServerSessionEndpoint.close(ServerSessionEndpoint.java:403)
  |         at org.jboss.jms.server.endpoint.ServerConnectionEndpoint.close(ServerConnectionEndpoint.java:300)
  |         at org.jboss.jms.server.connectionmanager.SimpleConnectionManager.handleClientFailure(SimpleConnectionManager.java:158)
  |         at org.jboss.jms.server.connectionmanager.SimpleConnectionManager.handleConnectionException(SimpleConnectionManager.java:208)
  |         at org.jboss.remoting.ConnectionNotifier.connectionLost(ConnectionNotifier.java:46)
  |         at org.jboss.remoting.Lease$LeaseTimerTask.execute(Lease.java:133)
  |         at org.jboss.util.TimerQueue$TimerTaskLoop.run(TimerQueue.java:181)
  |         at java.lang.Thread.run(Thread.java:595)
  | Caused by: java.lang.InterruptedException
  |         at EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$WriterLock.acquire(WriterPreferenceReadWriteLock.java:234)
  |         at org.jboss.messaging.core.local.PointToMultipointRouter.remove(PointToMultipointRouter.java:161)
  |         ... 12 more
  | 14:59:21,153 ERROR util.ExceptionUtil - SessionEndpoint[-2147483629] close [4co2mt-16t2uo-exm8rsfy-1-exm8t0ox-i]
  | org.jboss.jms.util.MessagingJMSException: A failure has occurred during processing of the request. Please consult the server logs for more details. ConsumerEndpoint[-2147483628] close [4co2mt-16t2uo-e
  | xm8rsfy-1-exm8t0on-h]
  |         at org.jboss.jms.util.ExceptionUtil.handleJMSInvocation(ExceptionUtil.java:72)
  |         at org.jboss.jms.server.endpoint.ServerConsumerEndpoint.close(ServerConsumerEndpoint.java:377)
  |         at org.jboss.jms.server.endpoint.ServerConsumerEndpoint.remove(ServerConsumerEndpoint.java:543)
  |         at org.jboss.jms.server.endpoint.ServerSessionEndpoint.close(ServerSessionEndpoint.java:403)
  |         at org.jboss.jms.server.endpoint.ServerConnectionEndpoint.close(ServerConnectionEndpoint.java:300)
  |         at org.jboss.jms.server.connectionmanager.SimpleConnectionManager.handleClientFailure(SimpleConnectionManager.java:158)
  |         at org.jboss.jms.server.connectionmanager.SimpleConnectionManager.handleConnectionException(SimpleConnectionManager.java:208)
  |         at org.jboss.remoting.ConnectionNotifier.connectionLost(ConnectionNotifier.java:46)
  |         at org.jboss.remoting.Lease$LeaseTimerTask.execute(Lease.java:133)
  |         at org.jboss.util.TimerQueue$TimerTaskLoop.run(TimerQueue.java:181)
  |         at java.lang.Thread.run(Thread.java:595)
  | 

Note that there is no message delivered published to the topic at all. 

Here is the EJB3 MDB I deployed:

  | @MessageDriven(
  | name = "NotificationMDB", 
  | activationConfig = {
  |   @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
  |   @ActivationConfigProperty(propertyName = "destination", propertyValue = "topic/Notification"),
  |   @ActivationConfigProperty(propertyName = "user", propertyValue = "user"),
  |   @ActivationConfigProperty(propertyName = "password", propertyValue = "pass"),
  |   @ActivationConfigProperty(propertyName = "noLocal", propertyValue = "true") })
  | @ResourceAdapter("jms-ra.rar")
  | public class NotificationMDB extends BaseServiceBean implements MessageListener {
  | 
  |     public void onMessage(Message message) {
  |         System.out.println("=========\nMDB message received: " + message.toString() + "\n===========");
  |     }
  | }
  | 

I am not doing anything abnormal. It seems that the messaging code is forcing the connections to be closed after about 30 seconds. It should not be doing it as a topic subscriber or queue consumer may connect to the topic / queue for a fairly long time. 

The @ResourceAdaptor annotation I put there does not have any effect on this problem.

I feel this should be fairly basic. Any one who is deploying a MDB would have probably seen it. Please help if you know anything about this.

Thank you.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4009029#4009029

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4009029



More information about the jboss-user mailing list