1 Reply Latest reply on Jun 22, 2009 11:04 AM by martinmurphy

    FUSE Message Broker Exceptions

    marc2112

      Hey Folks-

       

      I'm seeing a couple of flavors of exceptions fairly frequently in my JMS consumer.  Any ideas on how to resolve or what impact they are causing?

       

      The first flavor is this:

      09:46:21,777 ERROR [] - Error redispatching unconsumed messages from stale session

      java.lang.NullPointerException

              at org.apache.activemq.ra.ServerSessionPoolImpl.createServerSessionImpl(ServerSessionPoolImpl.java:63)

              at org.apache.activemq.ra.ServerSessionPoolImpl.getServerSession(ServerSessionPoolImpl.java:116)

              at org.apache.activemq.ra.ServerSessionPoolImpl.dispatchToSession(ServerSessionPoolImpl.java:244)

              at org.apache.activemq.ra.ServerSessionPoolImpl.removeFromPool(ServerSessionPoolImpl.java:225)

              at org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:188)

              at org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:290)

              at org.apache.geronimo.connector.work.pool.NamedRunnable.run(NamedRunnable.java:33)

              at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

              at java.lang.Thread.run(Thread.java:619)

       

      The second flavor is this:

      09:47:04,692 ERROR ActiveMQ Connection Worker: tcp://myhost22:61517?wireFormat.maxInactivityDuration=300000 [] - Connection to broker failed: The subscription does not exist: ID:myhost1.mydomain.com-56397-1245085860227-0:18871:-1:2

      javax.jms.JMSException: The subscription does not exist: ID:myhost1.mydomain.com-56397-1245085860227-0:18871:-1:2

              at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49)

              at org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1784)

              at org.apache.activemq.ActiveMQConnection$2$1.run(ActiveMQConnection.java:1705)

              at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)

              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)

              at java.lang.Thread.run(Thread.java:619)

      Caused by: java.lang.IllegalArgumentException: The subscription does not exist: ID:myhost1.mydomain.com-56397-1245085860227-0:18871:-1:2

              at org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:368)

              at org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:468)

              at org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:194)

              at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)

              at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)

              at org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:85)

              at org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:461)

              at org.apache.activemq.command.MessageAck.visit(MessageAck.java:205)

              at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:308)

              at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:182)

              at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)

              at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)

              at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:210)

              at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)

              at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:203)

              at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185)

       

      I am running a two server network-of-brokers topology with both servers running activemq version fuse-5.3.0.2.  My network-connector XML config looks like this:

              myhost1.

       

      In the activemq logs I see three flavors of exceptions but none at those exact timestamps i see in the consumer.

       

      The first flavor is:

      2009-06-16 09:47:04,924 WARN  Service                        - Async error occurred: java.lang.NullPointerException: Context is null

      java.lang.NullPointerException: Context is null

              at org.apache.activemq.broker.TransportConnection.processBeginTransaction(TransportConnection.java:370)

              at org.apache.activemq.command.TransactionInfo.visit(TransactionInfo.java:94)

              at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:308)

              at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:182)

              at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)

              at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)

              at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:210)

              at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)

              at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:203)

              at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185)

              at java.lang.Thread.run(Thread.java:619)

       

      The second flavor is this:

      2009-06-16 09:47:05,058 WARN  Service                        - Async error occurred: javax.jms.JMSException: Unmatched acknowledege: MessageAck {commandId = 15, responseRequired = false, ackType = 2, consumerId = ID:myh

      ost1.mydomain.com-56397-1245085860227-0:18875:-1:2, firstMessageId = ID:myhost1.mydomain.com-56397-1245085860227-0:18877:1:1:1, lastMessageId = ID:myhost1.mydomain.com-56397-1245085860227-0:18877:1:1:1, destination = queue://Queue.myqueuename, transactionId = TX:ID:myhost1.mydomain.com-56397-1245085860227-0:18875:3, messageCount = 1}; Could not find Message-ID ID:myhost1.mydomain.com-56397-1245085860227-0:18877:1:1:1 in dispatched

      -list (start of ack)

      javax.jms.JMSException: Unmatched acknowledege: MessageAck {commandId = 15, responseRequired = false, ackType = 2, consumerId = ID:myhost1.mydomain.com-56397-1245085860227-0:18875:-1:2, firstMessageId = ID:myhost1.mydomain.com-56397-12

      45085860227-0:18877:1:1:1, lastMessageId = ID:myhost1.mydomain.com-56397-1245085860227-0:18877:1:1:1, destination = queue://Queue.myqueuename, transactionId = TX:ID:myhost1.mydomain.com-56397-12450858

      60227-0:18875:3, messageCount = 1}; Could not find Message-ID ID:myhost1.mydomain.com-56397-1245085860227-0:18877:1:1:1 in dispatched-list (start of ack)

              at org.apache.activemq.broker.region.PrefetchSubscription.assertAckMatchesDispatched(PrefetchSubscription.java:446)

              at org.apache.activemq.broker.region.PrefetchSubscription.acknowledge(PrefetchSubscription.java:208)

              at org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:377)

              at org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:468)

              at org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:194)

              at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)

              at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)

              at org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:85)

              at org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:461)

              at org.apache.activemq.command.MessageAck.visit(MessageAck.java:205)

              at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:308)

              at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:182)

              at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)

              at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)

              at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:210)

              at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)

              at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:203)

              at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185)

              at java.lang.Thread.run(Thread.java:619)

       

       

      The third flavor is this:

      2009-06-16 09:46:21,612 WARN  Service                        - Async error occurred: java.lang.IllegalArgumentException: The subscription does not exist: ID:myhost1.mydomainm.com-56397-1245085860227-0:18864:-1:2

      java.lang.IllegalArgumentException: The subscription does not exist: ID:myhost1.mydomain.com-56397-1245085860227-0:18864:-1:2

              at org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:368)

              at org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:468)

              at org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:194)

              at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)

              at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)

              at org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:85)

              at org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:461)

              at org.apache.activemq.command.MessageAck.visit(MessageAck.java:205)

              at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:308)

              at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:182)

              at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)

              at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)

              at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:210)

              at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)

              at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:203)

              at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185)

              at java.lang.Thread.run(Thread.java:619)

       

      Thanks so much for your help.

      ---Marc

        • 1. Re: FUSE Message Broker Exceptions
          martinmurphy

          Hi Marc,

           

          Can you set the prefetch limit to one to see if you still see this problem?

          tcp://localhost:61616?jms.prefetchPolicy.queuePrefetch=1
          

          This may workaround this, but if you could break this down into a test that shows the problem and attach it here we may be able to look into this further.

           

          Regards,

          - Martin