[
https://issues.apache.org/jira/browse/AMQ-6663?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Timothy Bish closed AMQ-6663.
-----------------------------
Resolution: Incomplete
No feedback on newer releases so unconfirmed if this is still an issue or not
and no reproducer.
> IO exceptions causing Broker Service shutdown; When broker restarts,
> active-mq ignores the configured location for kahadb
> -------------------------------------------------------------------------------------------------------------------------
>
> Key: AMQ-6663
> URL: https://issues.apache.org/jira/browse/AMQ-6663
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker, KahaDB, Message Store
> Affects Versions: 5.11.0
> Reporter: Vidyashree
> Priority: Critical
>
> ActiveMQ version: 5.11.0.redhat-620143
> A-MQ configuration in activemq.xml
> <bean id="persistenceAdapter"
>
> class="org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter">
> <property name="directory"
> value="${activemq.home}/${id}/jms/kahaDb"/>
> <property name="enableJournalDiskSyncs" value="false" />
> <property name="journalMaxFileLength" value="33554432" />
> <property name="ignoreMissingJournalfiles" value="true"/>
> <property name="checkForCorruptJournalFiles" value="true"/>
> </bean>
> <bean id="brokerServices"
> class="org.apache.activemq.broker.BrokerService">
> <description>AMQ Broker</description>
> <property name="dataDirectory"
> value="${activemq.home}/${id}/jms"/>
> <property name="systemUsage" ref="systemUsage" />
> <property name="persistenceAdapter" ref="persistenceAdapter" />
> <property name="managementContext" ref="managementContext" />
> <property name="destinationPolicy" ref="destinationPolicy"/>
> <property name="useShutdownHook" value="false"/>
> </bean>
> Problem description:
> During durable subscription removal, we are observing IO exceptions as below,
> and it is resulting in shutdown of the broker. And we also observe change in
> path of the kahadb location to the active-mq default
> location({$home}/activemq-data/activemq-instance1/KahaDB). It should have
> taken the configured location from activemq.xml
> Stack trace from the EOFException :
> 2017-04-11 04:56:01,640 org.apache.activemq.store.kahadb.MessageDatabase
> ERROR (MessageDatabase.java:store:1010)
> [CamelJettyServer(0x57063e08)-3734787] [3734787] | KahaDB failed to store to
> Journal
> java.io.EOFException
> at java.io.DataInputStream.readFully(Unknown Source)
> at java.io.DataInputStream.readLong(Unknown Source)
> at
> org.apache.activemq.store.kahadb.MessageDatabase$StoredDestinationMarshaller.readPayload(MessageDatabase.java:1988)
> at
> org.apache.activemq.store.kahadb.MessageDatabase$StoredDestinationMarshaller.readPayload(MessageDatabase.java:1910)
> at
> org.apache.activemq.store.kahadb.disk.index.BTreeNode$Marshaller.readPayload(BTreeNode.java:209)
> at
> org.apache.activemq.store.kahadb.disk.index.BTreeNode$Marshaller.readPayload(BTreeNode.java:155)
> at
> org.apache.activemq.store.kahadb.disk.page.Transaction.load(Transaction.java:422)
> at
> org.apache.activemq.store.kahadb.disk.page.Transaction.load(Transaction.java:377)
> at
> org.apache.activemq.store.kahadb.disk.index.BTreeIndex.loadNode(BTreeIndex.java:266)
> at
> org.apache.activemq.store.kahadb.disk.index.BTreeIndex.getRoot(BTreeIndex.java:174)
> at
> org.apache.activemq.store.kahadb.disk.index.BTreeIndex.remove(BTreeIndex.java:194)
> at
> org.apache.activemq.store.kahadb.MessageDatabase.updateIndex(MessageDatabase.java:1469)
> at
> org.apache.activemq.store.kahadb.MessageDatabase.updateIndex(MessageDatabase.java:1500)
> at
> org.apache.activemq.store.kahadb.MessageDatabase$15.execute(MessageDatabase.java:1219)
> at
> org.apache.activemq.store.kahadb.disk.page.Transaction.execute(Transaction.java:779)
> at
> org.apache.activemq.store.kahadb.MessageDatabase.process(MessageDatabase.java:1216)
> at
> org.apache.activemq.store.kahadb.MessageDatabase$10.visit(MessageDatabase.java:1115)
> at
> org.apache.activemq.store.kahadb.data.KahaSubscriptionCommand.visit(KahaSubscriptionCommand.java:187)
> at
> org.apache.activemq.store.kahadb.MessageDatabase.process(MessageDatabase.java:1082)
> at
> org.apache.activemq.store.kahadb.MessageDatabase.store(MessageDatabase.java:989)
> at
> org.apache.activemq.store.kahadb.MessageDatabase.store(MessageDatabase.java:969)
> at
> org.apache.activemq.store.kahadb.KahaDBStore$KahaDBTopicMessageStore.deleteSubscription(KahaDBStore.java:807)
> at
> org.apache.activemq.store.ProxyTopicMessageStore.deleteSubscription(ProxyTopicMessageStore.java:103)
> at
> org.apache.activemq.broker.region.Topic.deleteSubscription(Topic.java:201)
> at
> org.apache.activemq.broker.region.TopicRegion.removeSubscription(TopicRegion.java:220)
> at
> org.apache.activemq.broker.region.RegionBroker.removeSubscription(RegionBroker.java:448)
> at
> org.apache.activemq.broker.BrokerFilter.removeSubscription(BrokerFilter.java:117)
> at
> org.apache.activemq.advisory.AdvisoryBroker.removeSubscription(AdvisoryBroker.java:314)
> at
> org.apache.activemq.broker.BrokerFilter.removeSubscription(BrokerFilter.java:117)
> at
> org.apache.activemq.broker.BrokerFilter.removeSubscription(BrokerFilter.java:117)
> at
> org.apache.activemq.broker.MutableBrokerFilter.removeSubscription(MutableBrokerFilter.java:122)
> at
> org.apache.activemq.broker.jmx.BrokerView.destroyDurableSubscriber(BrokerView.java:449)
> at
> org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63)
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398)
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
> at
> org.apache.camel.component.jetty.CamelContinuationServlet.service(CamelContinuationServlet.java:150)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
> at
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1496)
> at
> org.eclipse.jetty.servlets.MultiPartFilter.doFilter(MultiPartFilter.java:131)
> at
> org.apache.camel.component.jetty.CamelFilterWrapper.doFilter(CamelFilterWrapper.java:43)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
> at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
> at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
> at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
> at org.eclipse.jetty.server.Server.handle(Server.java:370)
> at
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
> at
> org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)
> at
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043)
> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
> at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
> at
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
> at java.lang.Thread.run(Unknown Source)
> instance1 2017-04-11 04:56:01,646
> org.apache.activemq.util.DefaultIOExceptionHandler INFO
> (DefaultIOExceptionHandler.java:stopBroker:165)
> [CamelJettyServer(0x57063e08)-3734787] [3734787] | Stopping
> BrokerService[activemq-instance1] due to exception, java.io.EOFException
> java.io.EOFException
> at java.io.DataInputStream.readFully(Unknown Source)
> at java.io.DataInputStream.readLong(Unknown Source)
> at
> org.apache.activemq.store.kahadb.MessageDatabase$StoredDestinationMarshaller.readPayload(MessageDatabase.java:1988)
>
> 1. Why did ActiveMQ consider the default location for KahaDB (Mentioned in
> IOHelper and MessageDatabase classes of activemq) instead of the configured
> path during broker restart?
> 2. When we restarted the system with the affected contents of kahaDB store,
> we found the below information from the active mq log
> org.apache.activemq.store.kahadb.MessageDatabase WARN
> (MessageDatabase.java:open:382) [main] [1] | Index corrupted. Recovering the
> index through journal replay. Cause:java.io.EOFException
> org.apache.activemq.store.kahadb.MessageDatabase DEBUG
> (MessageDatabase.java:open:384) [main] [1] | Index load failure
> - What could be the cause of index corruption?
> - What happens if there is index corruption in the KahaDB store and
> system does not restart?
> - We did not see any issue with disk such as disk is unavailable of no
> more space on the disk. So, in these conditions, how did the corruption
> happened in the system?
> Is it related to https://issues.apache.org/jira/browse/AMQ-6086?
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)