Uploaded image for project: 'JBoss Transaction Manager'
  1. JBoss Transaction Manager
  2. JBTM-2331

TransactionalDriver may leave a JDBC Connection associated after transaction termination

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: 5.0.4
    • Fix Version/s: 5.1.0
    • Component/s: JTA
    • Labels:
      None
    • Steps to Reproduce:
      Hide

      1) Start a transaction;
      2) Obtain a connection via the TransactionalDriver
      3) End transaction
      4) start another transaction
      5) call connection.isClosed()

      This produces the exception reported in the description because transactional driver thinks the connection from the first transaction is still associated.

      Show
      1) Start a transaction; 2) Obtain a connection via the TransactionalDriver 3) End transaction 4) start another transaction 5) call connection.isClosed() This produces the exception reported in the description because transactional driver thinks the connection from the first transaction is still associated.

      Description

      1) Start a transaction;
      2) Obtain a connection via the TransactionalDriver
      3) End transaction
      4) start another transaction
      5) Call connection.isClosed()

      this will produce the following exception because the transactional driver thinks the connection is still associated:

      java.lang.RuntimeException: java.sql.SQLException: ARJUNA017003: Checking transaction and found that this connection is already associated with a different transaction! Obtain a new connection for this transaction.
      	at ceylon.modules.bootstrap.CeylonRunTool.run(CeylonRunTool.java:228)
      	at com.redhat.ceylon.common.tools.CeylonTool.run(CeylonTool.java:368)
      	at com.redhat.ceylon.common.tools.CeylonTool.execute(CeylonTool.java:305)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at com.redhat.ceylon.launcher.Launcher.runInJava7Checked(Launcher.java:113)
      	at com.redhat.ceylon.launcher.Launcher.run(Launcher.java:40)
      	at com.redhat.ceylon.launcher.Launcher.run(Launcher.java:33)
      	at com.redhat.ceylon.launcher.Launcher.main(Launcher.java:26)
      Caused by: java.sql.SQLException: ARJUNA017003: Checking transaction and found that this connection is already associated with a different transaction! Obtain a new connection for this transaction.
      	at com.arjuna.ats.internal.jdbc.ConnectionImple.checkTransaction(ConnectionImple.java:1078)
      	at com.arjuna.ats.internal.jdbc.ConnectionImple.isClosed(ConnectionImple.java:417)
      	at ceylon.dbc.ConnectionStatus.connection(ConnectionStatus.ceylon:22)
      	at ceylon.dbc.Sql.prepareStatement$priv$(Sql.ceylon:89)
      	at ceylon.dbc.Sql.access$100(Sql.ceylon:701)
      	at ceylon.dbc.Sql$Update.execute$canonical$(Sql.ceylon:346)
      	at ceylon.dbc.Sql$Update.execute(Sql.ceylon:343)
      	at example.ceylon.transaction.tm.runTx_.runTx(transaction.ceylon:199)
      	at example.ceylon.transaction.tm.run_.run(transaction.ceylon:225)
      	at example.ceylon.transaction.tm.run_.main(transaction.ceylon)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at ceylon.modules.api.runtime.SecurityActions.invokeRunInternal(SecurityActions.java:58)
      	at ceylon.modules.api.runtime.SecurityActions.invokeRun(SecurityActions.java:48)
      	at ceylon.modules.api.runtime.AbstractRuntime.invokeRun(AbstractRuntime.java:101)
      	at ceylon.modules.api.runtime.AbstractRuntime.execute(AbstractRuntime.java:167)
      	at ceylon.modules.api.runtime.AbstractRuntime.execute(AbstractRuntime.java:151)
      	at ceylon.modules.Main.execute(Main.java:69)
      	at ceylon.modules.Main.main(Main.java:42)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at org.jboss.modules.Module.run(Module.java:312)
      	at org.jboss.modules.Main.main(Main.java:460)
      	at ceylon.modules.bootstrap.CeylonRunTool.run(CeylonRunTool.java:208)
      	... 10 more
      

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Assignee:
                mmusgrov Michael Musgrove
                Reporter:
                mmusgrov Michael Musgrove
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: