[
https://issues.apache.org/jira/browse/QPID-3658?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Robbie Gemmell closed QPID-3658.
--------------------------------
Resolution: Fixed
Fix Version/s: 0.15
Committed fix for the test, which assumed that messages had reached the broker
which may not have.
Closing out JIRA, any additional work required can be handled by reopening the
original JIRA.
> Rolling back with ManagedConnectingMBean sometimes fails to rollback the
> transaction or results in various exceptions propagated into a client.
> ------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: QPID-3658
> URL: https://issues.apache.org/jira/browse/QPID-3658
> Project: Qpid
> Issue Type: Bug
> Components: Java Broker
> Affects Versions: 0.15
> Reporter: Alex Rudyy
> Fix For: 0.15
>
>
> Tests from org.apache.qpid.management.jmx.ManagedConnectionMBeanTest added as
> part of introducing ManagedConnectionMBean on 0-10 path (QPID-2243) reviled
> several issues with transaction rollback on both 0-9 and 0-10 paths.
> 1) The first issue sporadically occurs for test profiles
> java-bdb-spawn.0-9-1, java-bdb-spawn.0-10.
> Transaction can be not rolled back at all with
> ManagedConnectionMBean#rollback and the following commit from a client can
> successfully commit all published messages.
> The failed test stack trace demonstrate the problem
> {nowrap}
> junit.framework.AssertionFailedError: Unexpected message received
> at
> org.apache.qpid.management.jmx.ManagedConnectionMBeanTest.testRollback(ManagedConnectionMBeanTest.java:217)
> at
> org.apache.qpid.test.utils.QpidBrokerTestCase.runBare(QpidBrokerTestCase.java:240)
> at org.apache.qpid.test.utils.QpidTestCase.run(QpidTestCase.java:135)
> {nowrap}
> 2) The second issue sporadically occurs on trying to rolled back transaction
> for test profile java-bdb-spawn.0-9-1
> The BDB native exception is thrown on rollback from ManagedConnectionMBean
> {nowrap}
> org.apache.qpid.management.jmx.ManagedConnectionMBeanTest.testRollback
> Error Message
> Transaction Id 11 has been closed.
> Stacktrace
> java.lang.IllegalStateException: Transaction Id 11 has been closed.
> at com.sleepycat.je.Transaction.checkOpen(Transaction.java:764)
> at com.sleepycat.je.Transaction.doCommit(Transaction.java:466)
> at com.sleepycat.je.Transaction.commitNoSync(Transaction.java:388)
> at
> org.apache.qpid.server.store.berkeleydb.BDBMessageStore.commit(BDBMessageStore.java:1742)
> at
> org.apache.qpid.server.store.berkeleydb.BDBMessageStore.commitTranImpl(BDBMessageStore.java:1281)
> at
> org.apache.qpid.server.store.berkeleydb.BDBMessageStore.access$400(BDBMessageStore.java:94)
> at
> org.apache.qpid.server.store.berkeleydb.BDBMessageStore$StoredBDBMessage.flushToStore(BDBMessageStore.java:2053)
> at
> org.apache.qpid.server.store.berkeleydb.BDBMessageStore$StoredBDBMessage.remove(BDBMessageStore.java:2069)
> at org.apache.qpid.server.AMQChannel$2.onRollback(AMQChannel.java:303)
> at
> org.apache.qpid.server.txn.LocalTransaction.rollback(LocalTransaction.java:293)
> at org.apache.qpid.server.AMQChannel.rollback(AMQChannel.java:989)
> at org.apache.qpid.server.AMQChannel.rollback(AMQChannel.java:966)
> at
> org.apache.qpid.server.protocol.AMQProtocolEngine.rollbackTransactions(AMQProtocolEngine.java:646)
> at
> org.apache.qpid.server.protocol.AMQProtocolSessionMBean.rollbackTransactions(AMQProtocolSessionMBean.java:173)
> at
> com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:93)
> at
> com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:27)
> at
> com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:208)
> at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:120)
> at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:262)
> at javax.management.StandardMBean.invoke(StandardMBean.java:391)
> at
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
> at
> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
> at
> org.apache.qpid.server.management.MBeanInvocationHandlerImpl.invoke(MBeanInvocationHandlerImpl.java:202)
> at $Proxy11.invoke(Unknown Source)
> at
> javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1427)
> at
> javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
> at
> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1265)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1367)
> at
> javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
> at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
> at sun.rmi.transport.Transport$1.run(Transport.java:159)
> at java.security.AccessController.doPrivileged(Native Method)
> at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
> at
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
> at
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
> at
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
> 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:662)
> {nowrap}
> 3) The third issue sporadically happens for 0-10 bdb profile on trying to
> receive a message in a separate session after transaction was previously
> rolled back with MBean.
> The stack trace is below
> {nowrap}
> Error Message
> Message consumer forcibly closed due to error: org.apache.qpid.AMQException:
> ch=1 id=0 ExecutionException(errorCode=INTERNAL_ERROR, commandId=3,
> description=Exception processing command: java.lang.RuntimeException:
> java.lang.IllegalArgumentException: Transaction 12 has been closed and is no
> longer usable.) [error code 541: internal error]
> Stacktrace
> javax.jms.JMSException: Message consumer forcibly closed due to error:
> org.apache.qpid.AMQException: ch=1 id=0
> ExecutionException(errorCode=INTERNAL_ERROR, commandId=3,
> description=Exception processing command: java.lang.RuntimeException:
> java.lang.IllegalArgumentException: Transaction 12 has been closed and is no
> longer usable.) [error code 541: internal error]
> at
> org.apache.qpid.client.BasicMessageConsumer.returnMessageOrThrow(BasicMessageConsumer.java:529)
> at
> org.apache.qpid.client.BasicMessageConsumer.receive(BasicMessageConsumer.java:417)
> at
> org.apache.qpid.management.jmx.ManagedConnectionMBeanTest.testRollback(ManagedConnectionMBeanTest.java:210)
> at
> org.apache.qpid.test.utils.QpidBrokerTestCase.runBare(QpidBrokerTestCase.java:240)
> at org.apache.qpid.test.utils.QpidTestCase.run(QpidTestCase.java:135)
> Caused by: org.apache.qpid.AMQException: ch=1 id=0
> ExecutionException(errorCode=INTERNAL_ERROR, commandId=3,
> description=Exception processing command: java.lang.RuntimeException:
> java.lang.IllegalArgumentException: Transaction 12 has been closed and is no
> longer usable.) [error code 541: internal error]
> at
> org.apache.qpid.client.AMQSession_0_10.setCurrentException(AMQSession_0_10.java:1056)
> at
> org.apache.qpid.client.AMQSession_0_10.exception(AMQSession_0_10.java:914)
> at
> org.apache.qpid.transport.SessionDelegate.executionException(SessionDelegate.java:160)
> at
> org.apache.qpid.transport.SessionDelegate.executionException(SessionDelegate.java:32)
> at
> org.apache.qpid.transport.ExecutionException.dispatch(ExecutionException.java:112)
> at
> org.apache.qpid.transport.SessionDelegate.command(SessionDelegate.java:50)
> at
> org.apache.qpid.transport.SessionDelegate.command(SessionDelegate.java:32)
> at org.apache.qpid.transport.Method.delegate(Method.java:159)
> at org.apache.qpid.transport.Session.received(Session.java:545)
> at org.apache.qpid.transport.Connection.dispatch(Connection.java:422)
> at
> org.apache.qpid.transport.ConnectionDelegate.handle(ConnectionDelegate.java:64)
> at
> org.apache.qpid.transport.ConnectionDelegate.handle(ConnectionDelegate.java:40)
> at
> org.apache.qpid.transport.MethodDelegate.executionException(MethodDelegate.java:110)
> at
> org.apache.qpid.transport.ExecutionException.dispatch(ExecutionException.java:112)
> at
> org.apache.qpid.transport.ConnectionDelegate.command(ConnectionDelegate.java:54)
> at
> org.apache.qpid.transport.ConnectionDelegate.command(ConnectionDelegate.java:40)
> at org.apache.qpid.transport.Method.delegate(Method.java:159)
> at org.apache.qpid.transport.Connection.received(Connection.java:387)
> at org.apache.qpid.transport.Connection.received(Connection.java:66)
> at org.apache.qpid.transport.network.Assembler.emit(Assembler.java:95)
> at
> org.apache.qpid.transport.network.Assembler.assemble(Assembler.java:196)
> at org.apache.qpid.transport.network.Assembler.frame(Assembler.java:129)
> at org.apache.qpid.transport.network.Frame.delegate(Frame.java:133)
> at
> org.apache.qpid.transport.network.Assembler.received(Assembler.java:100)
> at
> org.apache.qpid.transport.network.Assembler.received(Assembler.java:42)
> at
> org.apache.qpid.transport.network.InputHandler.next(InputHandler.java:187)
> at
> org.apache.qpid.transport.network.InputHandler.received(InputHandler.java:103)
> at
> org.apache.qpid.transport.network.InputHandler.received(InputHandler.java:42)
> at
> org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:153)
> at java.lang.Thread.run(Thread.java:662)
> {nowrap}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]