[jboss-jira] [JBoss JIRA] Commented: (JBMESSAGING-1462) Message expiration is not correctly managed
Yong Hao Gao (JIRA)
jira-events at lists.jboss.org
Mon Sep 5 00:16:26 EDT 2011
[ https://issues.jboss.org/browse/JBMESSAGING-1462?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12626144#comment-12626144 ]
Yong Hao Gao commented on JBMESSAGING-1462:
-------------------------------------------
Hi,
I think this is expected. The JMS api doc says the following about the unsubscribe method:
"It is erroneous for a client to delete a durable subscription while there is an active TopicSubscriber for the subscription, or while a consumed message is part of a pending transaction or has not been acknowledged in the session."
So I think the client should acked all its messages before doing the unsubscription.
I'm going to reject it.
Thanks,
Howard
> Message expiration is not correctly managed
> -------------------------------------------
>
> Key: JBMESSAGING-1462
> URL: https://issues.jboss.org/browse/JBMESSAGING-1462
> Project: JBoss Messaging
> Issue Type: Bug
> Components: Messaging Core
> Affects Versions: 1.4.1.GA
> Environment: JBAS 5.0GA, JBM 1.4.1GA, persistence on Oracle 10i
> Reporter: Ivan Rododendro
> Assignee: Yong Hao Gao
> Fix For: 1.4.0.SP3.CP15, 1.4.8.SP3
>
> Attachments: JBMESSAGING-1462.java
>
>
> 1) A topic is created
> 2) A durable subscriber is created fro the topic
> 3) A message is sent on the topic
> 4) The durable subscriber pulls the message from the topic ( receive() ) but don't ack
> 5) The durable subscriber is closed, subscriber session.unsuscribe(name) is called but an exception is thrown and then the subsciber session is closed.
> As result of this a message, expired, with DELIVERY_COUNT = 1 will remain on the database forever.
> The stacktrace of the exception thrown:
> java.lang.IllegalStateException: Cannot remove references while deliveries are in progress (Channel 521), there are 1
> at org.jboss.messaging.core.impl.ChannelSupport.removeAllReferences(ChannelSupport.java:394)
> 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:829)
> 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.invokeTarget(SessionAdvised$unsubscribe_8775578479443985821.java)
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111)
> at org.jboss.jms.server.container.ServerLogInterceptor.invoke(ServerLogInterceptor.java:105)
> at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
> 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)
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list