Valentina created AMQ-4535:
------------------------------

             Summary: activemq configured with leveldb commit fail when 
accessed by PutGet f-tion from IBM Perf Harness
                 Key: AMQ-4535
                 URL: https://issues.apache.org/jira/browse/AMQ-4535
             Project: ActiveMQ
          Issue Type: Bug
          Components: activemq-leveldb-store, Broker
    Affects Versions: 5.8.0
         Environment: RHEL 6.4
            Reporter: Valentina


Poor performance and exceptions thrown when leveldb is configured with activemq 
while performance is measured with IBM Performance Harness. We use default 
configuration of activemq except that leveldb is used instead of kahadb. 

Test scenario uses jms.r11.PutGet which sends a message then receives one from 
the same queue. Normal usage is with correlation identifier to ensure the same 
message is received.

 Exception thrown by the broker : 

WARN | Store COMMIT FAILED: scala.MatchError: null at 
org.apache.activemq.leveldb.DelayableUOW.dequeue(DBManager.scala:282) at 
org.apache.activemq.leveldb.LevelDBStore$LevelDBMessageStore.doRemove(LevelDBStore.scala:578)
 at 
org.apache.activemq.leveldb.LevelDBStore$Transaction$$anon$3.commit(LevelDBStore.scala:328)
 at 
org.apache.activemq.leveldb.LevelDBStore$$anonfun$commit$1$$anonfun$apply$10.apply(LevelDBStore.scala:381)
 at 
org.apache.activemq.leveldb.LevelDBStore$$anonfun$commit$1$$anonfun$apply$10.apply(LevelDBStore.scala:380)
 at scala.collection.immutable.List.foreach(List.scala:309) at 
scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:32)
 at scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:45) at 
org.apache.activemq.leveldb.LevelDBStore$$anonfun$commit$1.apply(LevelDBStore.scala:380)
 at 
org.apache.activemq.leveldb.LevelDBStore$$anonfun$commit$1.apply(LevelDBStore.scala:379)
 at org.apache.activemq.leveldb.LevelDBStore.withUow(LevelDBStore.scala:536) at 
org.apache.activemq.leveldb.LevelDBStore.commit(LevelDBStore.scala:379) at 
org.apache.activemq.transaction.LocalTransaction.commit(LocalTransaction.java:72)
 at 
org.apache.activemq.broker.TransactionBroker.commitTransaction(TransactionBroker.java:263)
 at 
org.apache.activemq.broker.MutableBrokerFilter.commitTransaction(MutableBrokerFilter.java:103)
 at 
org.apache.activemq.broker.TransportConnection.processCommitTransactionOnePhase(TransportConnection.java:456)
 at org.apache.activemq.command.TransactionInfo.visit(TransactionInfo.java:100) 
at 
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:329)
 at 
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:184)
 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:288)
 at 
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
 at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214) 
at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196) at 
java.lang.Thread.run(Thread.java:722) The transaction does not exist


 Exception thrown by the client: 

PutGet1: Uncaught exception. javax.jms.JMSException: STORE COMMIT FAILED: 
Transaction rolled back. at 
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49)
 at 
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1391)
 at 
org.apache.activemq.TransactionContext.syncSendPacketWithInterruptionHandling(TransactionContext.java:748)
 at org.apache.activemq.TransactionContext.commit(TransactionContext.java:322) 
at org.apache.activemq.ActiveMQSession.commit(ActiveMQSession.java:561) at 
com.ibm.uk.hursley.perfharness.jms.r11.PutGet.oneIteration(PutGet.java:97) at 
com.ibm.uk.hursley.perfharness.WorkerThread.pace(WorkerThread.java:247) at 
com.ibm.uk.hursley.perfharness.WorkerThread.pace(WorkerThread.java:434) at 
com.ibm.uk.hursley.perfharness.jms.r11.JMS11WorkerThread.run(JMS11WorkerThread.java:286)
 at com.ibm.uk.hursley.perfharness.jms.r11.PutGet.run(PutGet.java:86) Caused 
by: javax.transaction.xa.XAException: STORE COMMIT FAILED: Transaction rolled 
back. at 
org.apache.activemq.transaction.LocalTransaction.commit(LocalTransaction.java:77)
 at 
org.apache.activemq.broker.TransactionBroker.commitTransaction(TransactionBroker.java:263)
 at 
org.apache.activemq.broker.MutableBrokerFilter.commitTransaction(MutableBrokerFilter.java:103)
 at 
org.apache.activemq.broker.TransportConnection.processCommitTransactionOnePhase(TransportConnection.java:456)
 at org.apache.activemq.command.TransactionInfo.visit(TransactionInfo.java:100) 
at 
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:329)
 at 
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:184)
 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:288)
 at 
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
 at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214) 
at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196) at 
java.lang.Thread.run(Thread.java:722) Caused by: java.lang.Throwable: 
scala.MatchError: null at 
org.apache.activemq.leveldb.DelayableUOW.dequeue(DBManager.scala:282) at 
org.apache.activemq.leveldb.LevelDBStore$LevelDBMessageStore.doRemove(LevelDBStore.scala:578)
 at 
org.apache.activemq.leveldb.LevelDBStore$Transaction$$anon$3.commit(LevelDBStore.scala:328)
 at 
org.apache.activemq.leveldb.LevelDBStore$$anonfun$commit$1$$anonfun$apply$10.apply(LevelDBStore.scala:381)
 at 
org.apache.activemq.leveldb.LevelDBStore$$anonfun$commit$1$$anonfun$apply$10.apply(LevelDBStore.scala:380)
 at scala.collection.immutable.List.foreach(List.scala:309) at 
scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:32)
 at scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:45) at 
org.apache.activemq.leveldb.LevelDBStore$$anonfun$commit$1.apply(LevelDBStore.scala:380)
 at 
org.apache.activemq.leveldb.LevelDBStore$$anonfun$commit$1.apply(LevelDBStore.scala:379)
 at org.apache.activemq.leveldb.LevelDBStore.withUow(LevelDBStore.scala:536) at 
org.apache.activemq.leveldb.LevelDBStore.commit(LevelDBStore.scala:379) at 
org.apache.activemq.transaction.LocalTransaction.commit(LocalTransaction.java:72)
 ... 13 more PutGet8: STOP


 After the test finished, we had several messages left in queues. We tried to 
read them with a different client and not in all cases we succeeded. However, 
after the broker restart, we could read the rest of messages. 

Our results for performance testing can be found at 
http://wiki.test.redhat.com/MRG/Messaging/PerformanceTesting/releases/m26_m29 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to