You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by tmurray <to...@psydex.com> on 2010/07/27 12:06:21 UTC

VMCursor Exhaustion

ActiveMQ version 5.3.2 and 5.4 Snapshot
ActiveMQ is setup as a standalone broker.
NODE_REQUEST topic is non-persistent.


I have been getting  an “Invalid acknowledgment” exception, after a process
which was subscribed to a non-durable topic was killed by a SIGKILL (kill
-9).   It appears as though the broker believes the consumer is still
connected and it is not acknowledging the messages, which eventually leads
to the vmcursor resources being exhausted.  Once the vmcursor resources are
exhausted the broker hangs.    

If a consumer does not shutdown gracefully (closing connection / session),
how do I avoid the aforementioned “Invalid acknowledgement”?    When the
connection is being setup, the session is set to use “AUTO_ACKNOWLEDGE”.  Is
there a setting in the activemq .conf file, I should set to help alleviate
abandoned connections.

Additionally, can you point me to an example of a file based cursor
activemq.xml config?

Thanks in advance for your assistance!!!



javax.jms.JMSException: Invalid acknowledgment: MessageAck {commandId = 99,
responseRequired = false, ackType = 3, consumerId =
ID:p110-43748-1279570531564-0:2:1:1, firstMessageId =
ID:ops2-42483-1279570578651-0:1:1:1:16, lastMessageId =
ID:ops2-42483-1279570578651-0:1:1:1:16, destination = topic://NODE_REQUEST,
transactionId = null, messageCount = 1}
        at
org.apache.activemq.broker.region.TopicSubscription.acknowledge(TopicSubscription.java:286)
        at
org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:382)
        at
org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:498)
        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.BrokerFilter.acknowledge(BrokerFilter.java:77)
        at
org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:200)
        at
org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:87)
        at
org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:462)
        at org.apache.activemq.command.MessageAck.visit(MessageAck.java:205)
        at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:306)
        at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:182)
        at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:69)
        at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
        at
org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:217)
        at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
        at
org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:219)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:201)
        at java.lang.Thread.run(Thread.java:619)

2010-07-20 21:48:02,042 | INFO  | TopicSubscription: consumer=ID:ops2
-56606-1279638920543-0:0:1:1, destinations=1, dispatched=32766,
delivered=2290710, matched=25519, discarded=0: Pending message cursor
[org.apache.activemq.broker.region.cursors.VMPendingMessageCursor@1fc102ae]
is full, temp usage (0%) or memory usage (100%) limit reached, blocking
message add() pending the release of resources. |
org.apache.activemq.broker.region.TopicSubscription | ActiveMQ Transport:
tcp:///10.10.101.42:55292

-- 
View this message in context: http://old.nabble.com/VMCursor-Exhaustion-tp29274805p29274805.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.