You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Alex Rudyy (Created) (JIRA)" <ji...@apache.org> on 2011/12/02 11:01:41 UTC

[jira] [Created] (QPID-3658) Rolling back with ManagedConnectingMBean sometimes fails to rollback the transaction or results in various exceptions propagated into a client.

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


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:dev-subscribe@qpid.apache.org


[jira] [Closed] (QPID-3658) Rolling back with ManagedConnectingMBean sometimes fails to rollback the transaction or results in various exceptions propagated into a client.

Posted by "Robbie Gemmell (Closed) (JIRA)" <ji...@apache.org>.
     [ 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:dev-subscribe@qpid.apache.org