[ https://issues.apache.org/jira/browse/ARIES-1279?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14237843#comment-14237843 ]
Aleksey Sushko commented on ARIES-1279: --------------------------------------- Error occurs SQLException. Fires method of connectionErrorOccurred GeronimoConnectionEventListener 89: connectionErrorOccurred called with Signal is sent to the destroy connection 95: stack.returnConnection(ci, ConnectionReturnAction.DESTROY); There is closing the current connection. TransactionCachingInterceptor 117: destroying connection Срабатывает обработчик TransactionEnlistingInterceptor. TransactionImpl перекладывает объект XAResource из списка activeXaResources в suspendedXaResources. Сведения о соединении остались в списке resourceManagers. Triggered the handler TransactionEnlistingInterceptor. TransactionImpl shifts XAResource object from activeXaResources to suspendedXaResources. Information about the connection remains in resourceManagers. Further, in the case enters the handler AbstractSinglePoolConnectionInterceptor. 106: returning connection null for MCI ManagedConnectionInfo ... 161: mc.destroy(); // Removing ManagedConnectionInfo ... // call ManagedJDBCConnection -> AbstractManagedConnection.destroy() 183: Discarding connection in pool !!! Connection closed !!! The transaction does not know that the connection is closed. It comes to the general transaction.rollback(). TransactionImpl cycle runs through a list of objects of resourceManagers. Each object sends a rollback. > Aries Transactions: Emergency closes JDBC connection before the transaction > is rolled back > ------------------------------------------------------------------------------------------ > > Key: ARIES-1279 > URL: https://issues.apache.org/jira/browse/ARIES-1279 > Project: Aries > Issue Type: Bug > Components: Transaction > Environment: org.apache.aries.transaction.jdbc:2.1.0 > org.apache.aries.transaction.manager:1.1.0 > org.apache.geronimo.components.geronimo-connector:3.1.1 > Reporter: Aleksey Sushko > > ManagedJDBCConnection emergency closes JDBC connection before the transaction > is rolled back. > Create a service of the JDBC DataSource. > {code} > <bean id="dataSourceOragnizer" class="oracle.jdbc.pool.OracleDataSource"> > <cm:managed-properties > persistent-id="oracle_oragnizer" > update-strategy="component-managed" > update-method="update"/> > </bean> > <service ref="dataSourceOragnizer" interface="javax.sql.DataSource"> > <service-properties> > <entry key="datasource.name" value="db-organizer"/> > <entry key="aries.xa.name" value="db-organizer"/> > <entry key="aries.xa.username" value="test"/> > <entry key="aries.xa.password" value="test"/> > <entry key="aries.xa.partitionStrategy" value="by-connector-properties"/> > </service-properties> > </service> > {code} > In SQL query has a bug. > {code} > 2014-12-08 01:04:20,214 | TRACE | l Console Thread | > TransactionCachingInterceptor | nd.TransactionCachingInterceptor 97 | > 135 - org.apache.geronimo.components.geronimo-connector - 3.1.1 | supplying > connection from tx cache for tx caching interceptor > org.apache.geronimo.connector.outbound.TransactionCachingInterceptor@c4b525e > handle: nullManagedConnectionInfo: > org.apache.geronimo.connector.outbound.ManagedConnectionInfo@5fc3d460. mc: > org.tranql.connector.jdbc.ManagedJDBCConnection@31ac1bbe] > 2014-12-08 01:04:20,220 | WARN | l Console Thread | > GeronimoConnectionEventListener | .GeronimoConnectionEventListener 89 | > 135 - org.apache.geronimo.components.geronimo-connector - 3.1.1 | > connectionErrorOccurred called with null > java.sql.SQLException: ORA-00904: "DOC_NUMBER": invalid identifier > ... > {code} > Further, there is an emergency closing the connection > {code} > 2014-12-08 01:04:20,227 | TRACE | l Console Thread | > TransactionCachingInterceptor | nd.TransactionCachingInterceptor 117 | > 135 - org.apache.geronimo.components.geronimo-connector - 3.1.1 | destroying > connection for tx caching interceptor > org.apache.geronimo.connector.outbound.TransactionCachingInterceptor@c4b525e > handle: nullManagedConnectionInfo: > org.apache.geronimo.connector.outbound.ManagedConnectionInfo@5fc3d460. mc: > org.tranql.connector.jdbc.ManagedJDBCConnection@31ac1bbe] > 2014-12-08 01:04:20,227 | TRACE | l Console Thread | > TransactionEnlistingInterceptor | .TransactionEnlistingInterceptor 96 | > 135 - org.apache.geronimo.components.geronimo-connector - 3.1.1 | Delisting > connection handle: nullManagedConnectionInfo: > org.apache.geronimo.connector.outbound.ManagedConnectionInfo@5fc3d460. mc: > org.tranql.connector.jdbc.ManagedJDBCConnection@31ac1bbe] with XAResource > org.apache.geronimo.connector.outbound.LocalXAResource@58abcff3 in > transaction: org.apache.geronimo.transaction.manager.TransactionImpl@76d51962 > java.lang.Exception: stack trace > at > org.apache.geronimo.connector.outbound.TransactionEnlistingInterceptor.returnConnection(TransactionEnlistingInterceptor.java:96)[135:org.apache.geronimo.components.geronimo-connector:3.1.1] > at > org.apache.geronimo.connector.outbound.TransactionCachingInterceptor.returnConnection(TransactionCachingInterceptor.java:119)[135:org.apache.geronimo.components.geronimo-connector:3.1.1] > at > org.apache.geronimo.connector.outbound.ConnectionHandleInterceptor.returnConnection(ConnectionHandleInterceptor.java:71)[135:org.apache.geronimo.components.geronimo-connector:3.1.1] > at > org.apache.geronimo.connector.outbound.TCCLInterceptor.returnConnection(TCCLInterceptor.java:50)[135:org.apache.geronimo.components.geronimo-connector:3.1.1] > at > org.apache.geronimo.connector.outbound.ConnectionTrackingInterceptor.returnConnection(ConnectionTrackingInterceptor.java:91)[135:org.apache.geronimo.components.geronimo-connector:3.1.1] > at > org.apache.geronimo.connector.outbound.GeronimoConnectionEventListener.connectionErrorOccurred(GeronimoConnectionEventListener.java:95)[135:org.apache.geronimo.components.geronimo-connector:3.1.1] > at > org.tranql.connector.AbstractManagedConnection.unfilteredConnectionError(AbstractManagedConnection.java:126)[133:org.apache.aries.transaction.jdbc:2.1.0] > at > org.tranql.connector.AbstractManagedConnection.connectionError(AbstractManagedConnection.java:115)[133:org.apache.aries.transaction.jdbc:2.1.0] > at > org.tranql.connector.jdbc.ConnectionHandle.connectionError(ConnectionHandle.java:112)[133:org.apache.aries.transaction.jdbc:2.1.0] > at > org.tranql.connector.jdbc.PreparedStatementHandle.execute(PreparedStatementHandle.java:179)[133:org.apache.aries.transaction.jdbc:2.1.0] > ... > 2014-12-08 01:04:20,230 | TRACE | l Console Thread | > tSinglePoolConnectionInterceptor | tSinglePoolConnectionInterceptor 106 | > 135 - org.apache.geronimo.components.geronimo-connector - 3.1.1 | returning > connection null for MCI ManagedConnectionInfo: > org.apache.geronimo.connector.outbound.ManagedConnectionInfo@5fc3d460. mc: > org.tranql.connector.jdbc.ManagedJDBCConnection@31ac1bbe] and MC > org.tranql.connector.jdbc.ManagedJDBCConnection@31ac1bbe to pool > org.apache.geronimo.connector.outbound.SinglePoolConnectionInterceptor@1a51706c > 2014-12-08 01:04:20,230 | INFO | l Console Thread | > SinglePoolConnectionInterceptor | .SinglePoolConnectionInterceptor 146 | > 135 - org.apache.geronimo.components.geronimo-connector - 3.1.1 | Removing > ManagedConnectionInfo: > org.apache.geronimo.connector.outbound.ManagedConnectionInfo@5fc3d460. mc: > org.tranql.connector.jdbc.ManagedJDBCConnection@31ac1bbe] from pool > org.apache.geronimo.connector.outbound.SinglePoolConnectionInterceptor@1a51706c > 2014-12-08 01:04:20,231 | TRACE | l Console Thread | > tSinglePoolConnectionInterceptor | tSinglePoolConnectionInterceptor 183 | > 135 - org.apache.geronimo.components.geronimo-connector - 3.1.1 | Discarding > connection in pool > org.apache.geronimo.connector.outbound.SinglePoolConnectionInterceptor@1a51706c > handle: nullManagedConnectionInfo: > org.apache.geronimo.connector.outbound.ManagedConnectionInfo@5fc3d460. mc: > org.tranql.connector.jdbc.ManagedJDBCConnection@31ac1bbe] > {code} > Further, there is rolled back. The system tries again to close the connection. > {code} > 2014-12-08 01:04:20,246 | ERROR | l Console Thread | RollbackTask > | transaction.manager.RollbackTask 68 | 69 - > org.apache.aries.transaction.manager - 1.1.0 | Unexpected exception > committing org.apache.geronimo.connector.outbound.LocalXAResource@58abcff3; > continuing to commit other RMs > javax.transaction.xa.XAException > at > org.apache.geronimo.connector.outbound.LocalXAResource.rollback(LocalXAResource.java:88)[135:org.apache.geronimo.components.geronimo-connector:3.1.1] > at > org.apache.geronimo.transaction.manager.RollbackTask.run(RollbackTask.java:64)[69:org.apache.aries.transaction.manager:1.1.0] > at > org.apache.geronimo.transaction.manager.TransactionImpl.rollbackResources(TransactionImpl.java:599)[69:org.apache.aries.transaction.manager:1.1.0] > at > org.apache.geronimo.transaction.manager.TransactionImpl.rollback(TransactionImpl.java:498)[69:org.apache.aries.transaction.manager:1.1.0] > at > org.apache.geronimo.transaction.manager.TransactionManagerImpl.rollback(TransactionManagerImpl.java:265)[69:org.apache.aries.transaction.manager:1.1.0] > at > myapp.impl.commands.ImportDoc.doExecute(ImportDoc.java:165)[141:documents-reload:2.2.0.SNAPSHOT] > at > org.apache.karaf.shell.console.OsgiCommandSupport.execute(OsgiCommandSupport.java:38)[16:org.apache.karaf.shell.console:2.3.8] > at > org.apache.felix.gogo.commands.basic.AbstractCommand.execute(AbstractCommand.java:35)[16:org.apache.karaf.shell.console:2.3.8] > at > org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:78)[16:org.apache.karaf.shell.console:2.3.8] > at > org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:474)[16:org.apache.karaf.shell.console:2.3.8] > at > org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:400)[16:org.apache.karaf.shell.console:2.3.8] > at > org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)[16:org.apache.karaf.shell.console:2.3.8] > at > org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)[16:org.apache.karaf.shell.console:2.3.8] > at > org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)[16:org.apache.karaf.shell.console:2.3.8] > at > org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)[16:org.apache.karaf.shell.console:2.3.8] > at > org.apache.karaf.shell.console.jline.Console.run(Console.java:184)[16:org.apache.karaf.shell.console:2.3.8] > at java.lang.Thread.run(Thread.java:745)[:1.7.0_72] > Caused by: javax.resource.spi.LocalTransactionException: Unable to rollback > at > org.tranql.connector.jdbc.ManagedJDBCConnection.localTransactionRollback(ManagedJDBCConnection.java:113)[133:org.apache.aries.transaction.jdbc:2.1.0] > at > org.tranql.connector.AbstractManagedConnection$LocalTransactionImpl.rollback(AbstractManagedConnection.java:203)[133:org.apache.aries.transaction.jdbc:2.1.0] > at > org.apache.geronimo.connector.outbound.LocalXAResource.rollback(LocalXAResource.java:86)[135:org.apache.geronimo.components.geronimo-connector:3.1.1] > ... 16 more > Caused by: java.sql.SQLException: Closed Connection > at > oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:113)[132:wrap_mvn_com.oracle_ojdbc14_10.2.0.5:0] > at > oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:147)[132:wrap_mvn_com.oracle_ojdbc14_10.2.0.5:0] > at > oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:209)[132:wrap_mvn_com.oracle_ojdbc14_10.2.0.5:0] > at > oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:1195)[132:wrap_mvn_com.oracle_ojdbc14_10.2.0.5:0] > at > oracle.jdbc.OracleConnectionWrapper.rollback(OracleConnectionWrapper.java:122)[132:wrap_mvn_com.oracle_ojdbc14_10.2.0.5:0] > at > org.tranql.connector.jdbc.ManagedJDBCConnection.localTransactionRollback(ManagedJDBCConnection.java:111)[133:org.apache.aries.transaction.jdbc:2.1.0] > ... 18 more > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)