activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kai Hudalla (JIRA)" <j...@apache.org>
Subject [jira] Created: (AMQ-1712) Recovery of TransactionBroker fails because of missing Subscriptions
Date Wed, 07 May 2008 11:56:43 GMT
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: 5.0.0, 4.1.2
            Reporter: Kai Hudalla


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.


Mime
View raw message