You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Dejan Bosanac (JIRA)" <ji...@apache.org> on 2009/07/01 13:04:07 UTC

[jira] Resolved: (AMQ-2303) Durable consumers recovery

     [ https://issues.apache.org/activemq/browse/AMQ-2303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dejan Bosanac resolved AMQ-2303.
--------------------------------

    Resolution: Fixed

Resolved by writing a SubscriptionInfo to the journal when durable consumer subscribes and using this info to recover it at the right moment (instead of the beginning of the recovery).

> Durable consumers recovery 
> ---------------------------
>
>                 Key: AMQ-2303
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2303
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.2.0
>            Reporter: Dejan Bosanac
>            Assignee: Dejan Bosanac
>             Fix For: 5.3.0
>
>
> When a broker with a lots of durable consumers goes down and is restarted with forced store recovery, producer fails with the following exception afterwards
> {code}
> 2009-06-24 17:54:02,923 [127.0.0.1:55928] ERROR AbstractStoreCursor            - Failed to fill batch
> java.lang.IllegalStateException: Message id ID:houdfrazierc.americas.progress.com-55015-1245858822880-1:45:1:1:1 could not be recovered from the data store for: topic://failoverTopic - already dispatched
> 	at org.apache.activemq.store.amq.RecoveryListenerAdapter.recoverMessageReference(RecoveryListenerAdapter.java:62)
> 	at org.apache.activemq.store.kahadaptor.KahaReferenceStore.recoverReference(KahaReferenceStore.java:88)
> 	at org.apache.activemq.store.kahadaptor.KahaTopicReferenceStore.recoverNextMessages(KahaTopicReferenceStore.java:307)
> 	at org.apache.activemq.store.amq.AMQTopicMessageStore.recoverNextMessages(AMQTopicMessageStore.java:60)
> 	at org.apache.activemq.broker.region.cursors.TopicStorePrefetch.doFillBatch(TopicStorePrefetch.java:91)
> 	at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.fillBatch(AbstractStoreCursor.java:227)
> 	at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.reset(AbstractStoreCursor.java:99)
> 	at org.apache.activemq.broker.region.cursors.StoreDurableSubscriberCursor.reset(StoreDurableSubscriberCursor.java:224)
> 	at org.apache.activemq.broker.region.PrefetchSubscription.dispatchPending(PrefetchSubscription.java:574)
> 	at org.apache.activemq.broker.region.PrefetchSubscription.add(PrefetchSubscription.java:158)
> 	at org.apache.activemq.broker.region.DurableTopicSubscription.add(DurableTopicSubscription.java:197)
> 	at org.apache.activemq.broker.region.policy.SimpleDispatchPolicy.dispatch(SimpleDispatchPolicy.java:49)
> 	at org.apache.activemq.broker.region.Topic.dispatch(Topic.java:577)
> 	at org.apache.activemq.broker.region.Topic.doMessageSend(Topic.java:430)
> 	at org.apache.activemq.broker.region.Topic.send(Topic.java:368)
> 	at org.apache.activemq.broker.region.AbstractRegion.send(AbstractRegion.java:354)
> 	at org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:443)
> 	at org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:224)
> 	at org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:95)
> 	at org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:133)
> 	at org.apache.activemq.broker.TransportConnection.processMessage(TransportConnection.java:455)
> 	at org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:639)
> 	at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:308)
> 	at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:182)
> 	at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
> 	at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
> 	at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:210)
> 	at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
> 	at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:203)
> 	at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185)
> 	at java.lang.Thread.run(Thread.java:613)
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.