qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robbie Gemmell (Closed) (JIRA)" <j...@apache.org>
Subject [jira] [Closed] (QPID-3658) Rolling back with ManagedConnectingMBean sometimes fails to rollback the transaction or results in various exceptions propagated into a client.
Date Fri, 02 Dec 2011 12:03:40 GMT

     [ 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


Mime
View raw message