You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Eduardo Corral <ec...@tid.es> on 2007/10/17 11:51:24 UTC

'transaction has not been started' with transacted consumers

Hi everyone

We are having a similar problem to this one:

http://www.nabble.com/JMSException-Transaction-*-has-not-been-started-t1563748.html#a4246798

using ActiveMQ 4.1.1 Broker (right now we cannot use 5.0 in our 
production environment).

Basically, we have some consumers using transactions (consume/commit), 
and we cannot use CLIENT_ACKNOWLEDGE). When forcing a slow DB access 
when consuming messages, we finally get the same error on all consumers:

[DEBUG][2007/10/17.11:01:05.960][ActiveMQ Transport: 
tcp:///127.0.0.1:37264]Async error occurred: javax.jms.JMSException: 
Transaction 'TX:ID:sombra-37249-1192611298747-0:0:4842' has not been 
started.(Transaction 'TX:ID:sombra-37249-1192611298747-0:0:4842' has not 
been started.)

Full stack:

Oct 17, 2007 11:01:06 AM org.apache.activemq.ActiveMQConnection 
onAsyncException
WARNING: Async exception with no exception listener: 
javax.jms.JMSException: Transaction 
'TX:ID:sombra-37249-1192611298747-0:0:4847' has not been started.
javax.jms.JMSException: Transaction 
'TX:ID:sombra-37249-1192611298747-0:0:4847' has not been started.
        at 
org.apache.activemq.broker.TransactionBroker.getTransaction(TransactionBroker.java:230)
        at 
org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:173)
        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:88)
        at 
org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:506)
        at org.apache.activemq.command.MessageAck.visit(MessageAck.java:179)
        at 
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:294)
        at 
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:185)
        at 
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:65)
        at 
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:133)
        at 
org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:127)
        at 
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
        at 
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:137)
        at java.lang.Thread.run(Unknown Source)

So, to make long story short: we need transacted consumers, with 
(ocasionally) slow DB access (no journal possible), and we need to avoid 
this exception. Does anyone know how to avoid it?

Thank you in advance and best regards
Eduardo