You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Rob Davies (JIRA)" <ji...@apache.org> on 2008/06/06 17:22:01 UTC

[jira] Resolved: (AMQ-1712) Recovery of TransactionBroker fails because of missing Subscriptions

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

Rob Davies resolved AMQ-1712.
-----------------------------

    Fix Version/s: 5.2.0
       Resolution: Fixed

Fixed by SVN revision 663980

> Recovery of TransactionBroker fails because of missing Subscriptions
> --------------------------------------------------------------------
>
>                 Key: AMQ-1712
>                 URL: https://issues.apache.org/activemq/browse/AMQ-1712
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 4.1.2, 5.0.0
>            Reporter: Kai Hudalla
>            Assignee: Rob Davies
>             Fix For: 5.2.0
>
>         Attachments: amq-1712.diff
>
>
> I am testing recovery of ActiveMQ by having a client continuously putting messages to a queue and then stopping the broker (Ctrl-C) and restarting it. During startup I get the following stack trace on ActiveMQ trunk version:
> ERROR: java.lang.Exception: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.act
> ivemq.xbean.XBeanBrokerService#0' defined in class path resource [activemq.xml]: Invocation of init method failed; nested exceptio
> n is java.io.IOException: Recovery Failed: The subscription does not exist: ID:FE-Z2965-2798-1210158536046-1:0:-1:2
> java.lang.Exception: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.activemq.x
> bean.XBeanBrokerService#0' defined in class path resource [activemq.xml]: Invocation of init method failed; nested exception is ja
> va.io.IOException: Recovery Failed: The subscription does not exist: ID:FE-Z2965-2798-1210158536046-1:0:-1:2
>         at org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:99)
>         at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57)
>         at org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:129)
>         at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57)
>         at org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:79)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.apache.activemq.console.Main.runTaskClass(Main.java:222)
>         at org.apache.activemq.console.Main.main(Main.java:106)
> Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.activemq.xbean.XBean
> BrokerService#0' defined in class path resource [activemq.xml]: Invocation of init method failed; nested exception is java.io.IOEx
> ception: Recovery Failed: The subscription does not exist: ID:FE-Z2965-2798-1210158536046-1:0:-1:2
>         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBean
> Factory.java:1260)
>         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFa
> ctory.java:438)
>         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.j
> ava:383)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFact
> ory.java:353)
>         at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
>         at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:1
> 69)
>         at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
>         at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>         at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactor
> y.java:400)
>         at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationConte
> xt.java:736)
>         at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:369)
>         at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:64)
>         at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:52)
>         at org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:96)
>         at org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:52)
>         at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71)
>         at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54)
>         at org.apache.activemq.console.command.StartCommand.startBroker(StartCommand.java:111)
>         at org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:73)
>         ... 10 more
> Caused by: java.io.IOException: Recovery Failed: The subscription does not exist: ID:FE-Z2965-2798-1210158536046-1:0:-1:2
>         at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:27)
>         at org.apache.activemq.broker.TransactionBroker.start(TransactionBroker.java:110)
>         at org.apache.activemq.broker.BrokerFilter.start(BrokerFilter.java:153)
>         at org.apache.activemq.broker.BrokerFilter.start(BrokerFilter.java:153)
>         at org.apache.activemq.broker.MutableBrokerFilter.start(MutableBrokerFilter.java:160)
>         at org.apache.activemq.broker.BrokerService.start(BrokerService.java:444)
>         at org.apache.activemq.xbean.XBeanBrokerService.afterPropertiesSet(XBeanBrokerService.java:50)
>         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableB
> eanFactory.java:1288)
>         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBean
> Factory.java:1257)
>         ... 29 more
> Caused by: java.lang.IllegalArgumentException: The subscription does not exist: ID:FE-Z2965-2798-1210158536046-1:0:-1:2
>         at org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:357)
>         at org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:470)
>         at org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:194)
>         at org.apache.activemq.broker.TransactionBroker$1.recover(TransactionBroker.java:100)
>         at org.apache.activemq.store.amq.AMQTransactionStore.recover(AMQTransactionStore.java:196)
>         at org.apache.activemq.broker.TransactionBroker.start(TransactionBroker.java:92)
>         ... 36 more
> I am wondering whether the _AbstractRegion.acknowledge()_ method shouldn't consider the _ConsumerBrokerExchange.getConnectionContext().getInRecoveryMode()_ flag and then NOT throw an _IllegalArgumentException_ if no matching Subscription is available (while recovering during startup of the TransactionBroker there won't be any Subscriptions available anyway, right?) ...
> Any thoughts?
> Kai

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