[
https://issues.apache.org/jira/browse/AMQ-4535?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Hiram Chirino resolved AMQ-4535.
--------------------------------
Resolution: Fixed
Fix Version/s: 5.9.0
Assignee: Hiram Chirino
Fixed in trunk. Thanks for the bug report!
> 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
> Assignee: Hiram Chirino
> Fix For: 5.9.0
>
> Attachments: activemq.xml, amq_test_reproducer.sh
>
>
> 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