2 Replies Latest reply on Jun 15, 2009 11:03 PM by Yong Hao Gao

    Unsubscribe of durable topic fails

    Carsten Rudat Novice

      Hi all,

      I have JBoss Messageing 1.4.1 with JBoss Remoting 2.5.1 running on JBoss AS 4.2.3.GA (all config) and I have serveral clients connected to a durable topic.

      Sometimes, when a client application closes and therefore unsubscribes from the topic, I have a server-side-exception:

      2009-06-12 22:17:16,795 ERROR [org.jboss.messaging.util.ExceptionUtil]
      SessionEndpoint[q42-mnskbvvf-1-i3sj4vvf-52puvc-110j3] unsubscribe
      [a62-v72bcvvf-1-i3sj4vvf-52puvc-110j3]
      java.lang.IllegalStateException: Cannot remove references while
      deliveries are in progress (Channel 721), there are 5
       at
      org.jboss.messaging.core.impl.ChannelSupport.removeAllReferences(ChannelSupport.java:402)
       at
      org.jboss.messaging.core.impl.postoffice.MessagingPostOffice.internalRemoveBinding(MessagingPostOffice.java:1939)
       at
      org.jboss.messaging.core.impl.postoffice.MessagingPostOffice.removeBinding(MessagingPostOffice.java:474)
       at
      org.jboss.jms.server.endpoint.ServerSessionEndpoint.unsubscribe(ServerSessionEndpoint.java:831)
       at
      org.jboss.jms.server.endpoint.advised.SessionAdvised.org$jboss$jms$server$endpoint$advised$SessionAdvised$unsubscribe$aop(SessionAdvised.java:135)
       at
      org.jboss.jms.server.endpoint.advised.SessionAdvised$unsubscribe_8775578479443985821.invokeNext(SessionAdvised$unsubscribe_8775578479443985821.java)
       at
      org.jboss.jms.server.container.ServerLogInterceptor.invoke(ServerLogInterceptor.java:105)
       at
      org.jboss.jms.server.endpoint.advised.SessionAdvised$unsubscribe_8775578479443985821.invokeNext(SessionAdvised$unsubscribe_8775578479443985821.java)
       at
      org.jboss.jms.server.endpoint.advised.SessionAdvised.unsubscribe(SessionAdvised.java)
       at
      org.jboss.jms.wireformat.SessionUnsubscribeRequest.serverInvoke(SessionUnsubscribeRequest.java:74)
       at
      org.jboss.jms.server.remoting.JMSServerInvocationHandler.invoke(JMSServerInvocationHandler.java:143)
       at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:908)
       at
      org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:742)
       at
      org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:695)
       at
      org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:549)
       at
      org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:230)
      


      But the client received its last message a long time ago. That means JBoss has stopped the delivery to that particular client. There is a JMS-Exception-Handler registered on the client that reconnects, if any problems on the underlying communication occurs, but this Handler is not called.

      How can I turn on more logging, to see why JBoss Messaging does not deliver the last messages?
      And is there a way to say "unsubscribe and discard undelivered messages"?

      Your help is very appreciated.

      Thx,
      Carsten