activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gary Tully (Resolved) (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (AMQ-3637) NullPointerException while loading node from kahadb during vmcursor replay
Date Fri, 16 Dec 2011 10:14:30 GMT

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

Gary Tully resolved AMQ-3637.
-----------------------------

    Resolution: Fixed

fix in http://svn.apache.org/viewvc?rev=1214888&view=rev
                
> NullPointerException while loading node from kahadb during vmcursor replay
> --------------------------------------------------------------------------
>
>                 Key: AMQ-3637
>                 URL: https://issues.apache.org/jira/browse/AMQ-3637
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.5.1
>            Reporter: Gary Tully
>            Assignee: Gary Tully
>              Labels: expiry, kahadb, recovery, ttl, vmQueueCursor
>             Fix For: 5.6.0
>
>
> When the vmQueueCursor is used with persistent messages that have a time to live (ttl)
expiry set. If the broker down time exceeds the ttl, on recovery the messages are replayed
through the vm cursor and an expiry check is done, leading to the messages getting deleted.
This nested kahaDB transaction (to remove the message) can badly effect the iterator traversing
the store, leading to missed messages and the NPE below. The recovery processing needs to
be batched such that periodic expiry can occur with out nesting transactions.
> {code}INFO | Recovery replayed 7784653 operations from the journal in 895.065 seconds.
>  INFO | ActiveMQ 5.5.1-fuse-01-11 JMS Message Broker () is starting
>  INFO | For help or more information please see: http://activemq.apache.org/
> ERROR | Failed to start ActiveMQ JMS Message Broker (). Reason: java.lang.NullPointerException
> java.lang.NullPointerException
> 	at org.apache.kahadb.index.BTreeIndex.loadNode(BTreeIndex.java:264)
> 	at org.apache.kahadb.index.BTreeNode$BTreeIterator.findNextPage(BTreeNode.java:103)
> 	at org.apache.kahadb.index.BTreeNode$BTreeIterator.hasNext(BTreeNode.java:121)
> 	at org.apache.activemq.store.kahadb.MessageDatabase$MessageOrderIndex$MessageOrderIterator.hasNext(MessageDatabase.java:2597)
> 	at org.apache.activemq.store.kahadb.KahaDBStore$KahaDBMessageStore$3.execute(KahaDBStore.java:506)
> 	at org.apache.kahadb.page.Transaction.execute(Transaction.java:760)
> 	at org.apache.activemq.store.kahadb.KahaDBStore$KahaDBMessageStore.recover(KahaDBStore.java:502)
> 	at org.apache.activemq.store.ProxyMessageStore.recover(ProxyMessageStore.java:52)
> 	at org.apache.activemq.broker.region.Queue.initialize(Queue.java:267)
> 	at org.apache.activemq.broker.region.DestinationFactoryImpl.createDestination(DestinationFactoryImpl.java:86)
> 	at org.apache.activemq.broker.region.AbstractRegion.createDestination(AbstractRegion.java:487)
> 	at org.apache.activemq.broker.region.AbstractRegion.addDestination(AbstractRegion.java:125)
> 	at org.apache.activemq.broker.region.RegionBroker.addDestination(RegionBroker.java:301)
> 	at org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145)
> 	at org.apache.activemq.advisory.AdvisoryBroker.addDestination(AdvisoryBroker.java:145)
> 	at org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145)
> 	at org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145)
> 	at org.apache.activemq.broker.MutableBrokerFilter.addDestination(MutableBrokerFilter.java:151)
> 	at org.apache.activemq.broker.region.AbstractRegion.start(AbstractRegion.java:97)
> 	at org.apache.activemq.broker.region.RegionBroker.start(RegionBroker.java:201)
> 	at org.apache.activemq.broker.BrokerFilter.start(BrokerFilter.java:157)
> 	at org.apache.activemq.broker.BrokerFilter.start(BrokerFilter.java:157)
> 	at org.apache.activemq.broker.TransactionBroker.start(TransactionBroker.java:123)
> 	at org.apache.activemq.broker.BrokerService$3.start(BrokerService.java:1814)
> 	at org.apache.activemq.broker.BrokerService.start(BrokerService.java:494)
> 	at ...
>  INFO | ActiveMQ Message Broker (null) is shutting down{code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message