[
https://issues.apache.org/jira/browse/AMQ-3677?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13199654#comment-13199654
]
James Furness commented on AMQ-3677:
------------------------------------
Stack trace from 5.5.1-fuse-01-20 (seems to happen only once this time rather
than every 30 seconds):
{code}
javax.jms.JMSException: java.lang.NullPointerException
at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49)
at
org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1869)
at
org.apache.activemq.ActiveMQConnection$2$1.run(ActiveMQConnection.java:1790)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException: null
at
org.apache.activemq.store.kahadb.MessageDatabase.removeAckLocation(MessageDatabase.java:1923)
at
org.apache.activemq.store.kahadb.MessageDatabase.updateIndex(MessageDatabase.java:1200)
at
org.apache.activemq.store.kahadb.MessageDatabase$15.execute(MessageDatabase.java:993)
at org.apache.kahadb.page.Transaction.execute(Transaction.java:765)
at
org.apache.activemq.store.kahadb.MessageDatabase.process(MessageDatabase.java:991)
at
org.apache.activemq.store.kahadb.MessageDatabase$13.visit(MessageDatabase.java:926)
at
org.apache.activemq.store.kahadb.data.KahaRemoveMessageCommand.visit(KahaRemoveMessageCommand.java:220)
at
org.apache.activemq.store.kahadb.MessageDatabase.process(MessageDatabase.java:918)
at
org.apache.activemq.store.kahadb.MessageDatabase.store(MessageDatabase.java:830)
at
org.apache.activemq.store.kahadb.KahaDBStore$KahaDBTopicMessageStore.doAcknowledge(KahaDBStore.java:693)
at
org.apache.activemq.store.kahadb.KahaDBStore$KahaDBTopicMessageStore.acknowledge(KahaDBStore.java:679)
at
org.apache.activemq.store.kahadb.KahaDBTransactionStore.acknowledge(KahaDBTransactionStore.java:492)
at
org.apache.activemq.store.kahadb.KahaDBTransactionStore$2.acknowledge(KahaDBTransactionStore.java:201)
at org.apache.activemq.broker.region.Topic.acknowledge(Topic.java:494)
at
org.apache.activemq.broker.region.DurableTopicSubscription.acknowledge(DurableTopicSubscription.java:270)
at
org.apache.activemq.broker.region.PrefetchSubscription.acknowledge(PrefetchSubscription.java:229)
at
org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:427)
at
org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:560)
at
org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:77)
at
org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:77)
at
org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:276)
at
org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:87)
at
org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:460)
at org.apache.activemq.command.MessageAck.visit(MessageAck.java:229)
at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:291)
at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:149)
at
org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
at
org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:229)
at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
at
org.apache.activemq.transport.nio.NIOTransport.serviceRead(NIOTransport.java:138)
at
org.apache.activemq.transport.nio.NIOTransport$1.onSelect(NIOTransport.java:69)
at
org.apache.activemq.transport.nio.SelectorSelection.onSelect(SelectorSelection.java:94)
at
org.apache.activemq.transport.nio.SelectorWorker$1.run(SelectorWorker.java:119)
... 3 common frames omitted
{code}
> NullPointerException in MessageDatabase leaves message stuck in KahaDB
> ----------------------------------------------------------------------
>
> Key: AMQ-3677
> URL: https://issues.apache.org/jira/browse/AMQ-3677
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.5.1
> Environment: ActiveMQ: 5.5.1-fuse-01-13
> JVM: 1.6.0_30-b12
> Reporter: James Furness
>
> A message appears to have gotten into a stuck state where it cannot be
> expired from KahaDB.
> Each expiry pass (every 30 seconds) is failing, presumably on the same
> message as the destination/expiration/timestamp/brokerInTime/etc are all
> identical:
> {code}
> 2012-01-23 14:02:48,191 ERROR ranteed.2] Scheduler BrokerLauncher
> org.apache.activemq.broker.ConnectionContext@7c0e6709:
> Persistent message has expired: ActiveMQBytesMessage {commandId = 1611,
> responseRequired = true, messageId =
> ID:broker1-59818-1327207516246-2:1:1:2:1, originalDestination = null,
> originalTransactionId = null, producerId =
> ID:broker-38443-1327100544854-21:1:1:1, destination = topic://TOPIC,
> transactionId = null, expiration = 1327294033981, timestamp = 1327207633981,
> arrival = 0, brokerInTime = 1327207633998, brokerOutTime = 1327207633993,
> correlationId = null, replyTo = null, persistent = true, type = null,
> priority = 4, groupID = null, groupSequence = 0, targetConsumerId = null,
> compressed = false, userID = null, content =
> org.apache.activemq.util.ByteSequence@35fa419, marshalledProperties = null,
> dataStructure = null, redeliveryCounter = 0, size = 0, properties = null,
> readOnlyProperties = false, readOnlyBody = false, droppable = false}
> ActiveMQBytesMessage{ bytesOut = null, dataOut = null, dataIn = null } for
> DurableTopicSubscription-NC_broker.1_inbound_broker.1.SystemGuaranteed.2:NC-DS_broker.1.SystemGuaranteed.2_TOPIC,
> id=OFFLINE:1:17, active=false, destinations=1, total=9, pending=9,
> dispatched=0, inflight=0, prefetchExtension=0
> 2012-01-23 14:02:48,191 ERROR ranteed.2] Scheduler BrokerLauncher
> Sent to DLQ: ActiveMQBytesMessage {commandId = 1611,
> responseRequired = true, messageId =
> ID:broker1-59818-1327207516246-2:1:1:2:1, originalDestination = null,
> originalTransactionId = null, producerId =
> ID:broker-38443-1327100544854-21:1:1:1, destination = topic://TOPIC,
> transactionId = null, expiration = 1327294033981, timestamp = 1327207633981,
> arrival = 0, brokerInTime = 1327207633998, brokerOutTime = 1327207633993,
> correlationId = null, replyTo = null, persistent = true, type = null,
> priority = 4, groupID = null, groupSequence = 0, targetConsumerId = null,
> compressed = false, userID = null, content =
> org.apache.activemq.util.ByteSequence@35fa419, marshalledProperties = null,
> dataStructure = null, redeliveryCounter = 0, size = 0, properties = null,
> readOnlyProperties = false, readOnlyBody = false, droppable = false}
> ActiveMQBytesMessage{ bytesOut = null, dataOut = null, dataIn = null }
> DurableTopicSubscription-NC_broker.1_inbound_broker.2:NC-DS_broker.2_TOPIC,
> id=OFFLINE:1:17, active=false, destinations=1, total=9, pending=9,
> dispatched=0, inflight=0, prefetchExtension=0
> org.apache.activemq.broker.ConnectionContext@7c0e6709
> 2012-01-23 14:02:48,192 ERROR ranteed.2] Scheduler o.a.a.broker.region.Topic
> Failed to remove expired Message from the store
> java.lang.NullPointerException: null
> at
> org.apache.activemq.store.kahadb.MessageDatabase.removeAckLocation(MessageDatabase.java:1920)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.MessageDatabase.updateIndex(MessageDatabase.java:1197)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.MessageDatabase$15.execute(MessageDatabase.java:990)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at org.apache.kahadb.page.Transaction.execute(Transaction.java:760)
> ~[kahadb-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.MessageDatabase.process(MessageDatabase.java:988)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.MessageDatabase$13.visit(MessageDatabase.java:923)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.data.KahaRemoveMessageCommand.visit(KahaRemoveMessageCommand.java:220)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.MessageDatabase.process(MessageDatabase.java:915)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.MessageDatabase.store(MessageDatabase.java:827)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.KahaDBStore$KahaDBTopicMessageStore.doAcknowledge(KahaDBStore.java:693)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.KahaDBStore$KahaDBTopicMessageStore.acknowledge(KahaDBStore.java:679)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.KahaDBTransactionStore.acknowledge(KahaDBTransactionStore.java:492)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.KahaDBTransactionStore$2.acknowledge(KahaDBTransactionStore.java:201)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.broker.region.Topic.acknowledge(Topic.java:494)
> [activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.broker.region.Topic.messageExpired(Topic.java:686)
> [activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at org.apache.activemq.broker.region.Topic.doBrowse(Topic.java:568)
> [activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at org.apache.activemq.broker.region.Topic.access$100(Topic.java:63)
> [activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at org.apache.activemq.broker.region.Topic$6.run(Topic.java:667)
> [activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)
> [activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at java.util.TimerThread.mainLoop(Unknown Source) [na:1.6.0_30]
> at java.util.TimerThread.run(Unknown Source) [na:1.6.0_30]
> {code}
> Restarting the broker does not help. Restarting the client causes the same
> exception to be serialised to the client:
> {code}
> 2012-01-23 01:40:49,903 ERROR true&soTimeout=60000 ErrorListener
> Error
> javax.jms.JMSException: java.lang.NullPointerException
> at
> org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1855)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.ActiveMQConnection$2$1.run(ActiveMQConnection.java:1776)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
> Source) [na:1.6.0_30]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> [na:1.6.0_30]
> at java.lang.Thread.run(Unknown Source) [na:1.6.0_30]
> Caused by: java.lang.NullPointerException: null
> at
> org.apache.activemq.store.kahadb.MessageDatabase.removeAckLocation(MessageDatabase.java:1920)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.MessageDatabase.updateIndex(MessageDatabase.java:1197)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.MessageDatabase$15.execute(MessageDatabase.java:990)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at org.apache.kahadb.page.Transaction.execute(Transaction.java:760)
> ~[kahadb-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.MessageDatabase.process(MessageDatabase.java:988)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.MessageDatabase$13.visit(MessageDatabase.java:923)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.data.KahaRemoveMessageCommand.visit(KahaRemoveMessageCommand.java:220)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.MessageDatabase.process(MessageDatabase.java:915)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.MessageDatabase.store(MessageDatabase.java:827)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.KahaDBStore$KahaDBTopicMessageStore.doAcknowledge(KahaDBStore.java:693)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.KahaDBStore$KahaDBTopicMessageStore.acknowledge(KahaDBStore.java:679)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.KahaDBTransactionStore.acknowledge(KahaDBTransactionStore.java:492)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.store.kahadb.KahaDBTransactionStore$2.acknowledge(KahaDBTransactionStore.java:201)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.broker.region.Topic.acknowledge(Topic.java:494)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.broker.region.DurableTopicSubscription.acknowledge(DurableTopicSubscription.java:270)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.broker.region.PrefetchSubscription.acknowledge(PrefetchSubscription.java:229)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:427)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:568)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:77)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:77)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:276)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:87)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:87)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:477)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at org.apache.activemq.command.MessageAck.visit(MessageAck.java:229)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:318)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:181)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:229)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.transport.nio.NIOTransport.serviceRead(NIOTransport.java:138)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.transport.nio.NIOTransport$1.onSelect(NIOTransport.java:69)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.transport.nio.SelectorSelection.onSelect(SelectorSelection.java:94)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> at
> org.apache.activemq.transport.nio.SelectorWorker$1.run(SelectorWorker.java:119)
> ~[activemq-core-5.5.1-fuse-01-13.jar:5.5.1-fuse-01-13]
> ... 3 common frames omitted
> {code}
> Is there any mechanism to purge the stuck message (without blowing away the
> whole database), or deal with the situation automatically?
--
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