You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Shreyas Kaushik (JIRA)" <de...@db.apache.org> on 2004/11/30 13:38:30 UTC

[jira] Commented: (DERBY-8) Connection object gets created with un-supported holdability on getting Connection object from XAConnection "inside" the global transaction

     [ http://nagoya.apache.org/jira/browse/DERBY-8?page=comments#action_56026 ]
     
Shreyas Kaushik commented on DERBY-8:
-------------------------------------

My comments on this issue:

Both the XAResource and the Connection handle got by calling a getConnection() method on a XAConnection are child entities of the XAConnection. So the XAResource and the Connection are in parallel if a hierarchy is imagined with a XAConnection as the head. 
  So the Connection handle got by calling a getConnection method on the XAResource is not bound to have the same holdability for cursors as that of the Transaction. It should have its own holdability state.

Moreover in a managed sscenario the XAConnection interface is not directly used, we just get a java.sql.Connection handle by calling the getConnection method on the DataSource. It is the DataSource configuration that determines what all happens behind the scene to return a Connection handle.

So in my opinion Derby is behaving properly.

> Connection object gets created with un-supported holdability on getting Connection object from XAConnection "inside" the global transaction
> -------------------------------------------------------------------------------------------------------------------------------------------
>
>          Key: DERBY-8
>          URL: http://nagoya.apache.org/jira/browse/DERBY-8
>      Project: Derby
>         Type: Bug
>   Components: JDBC
>     Versions: 10.0.2.0
>     Reporter: Tulika Agrawal
>     Priority: Minor

>
> Reporting for Mamta Satoor, filed on Derby-dev list.
> I think there is a bug in Derby when the user code tries to get the
> Connection object from XAConnection "inside" the global transaction.
> In this case, the Connection object gets created with un-supported
> holdability. Look at the following piece of code and it's output to
> see what exactly happens
>     EmbeddedXADataSource dscsx = new EmbeddedXADataSource();
>     dscsx.setDatabaseName("wombat");
>     XAConnection xac = dscsx.getXAConnection("fred", "wilma");
>     XAResource xr = xac.getXAResource();
>     xid = getXid(27, (byte) 21, (byte) 01);
>     xr.start(xid, XAResource.TMNOFLAGS);
>     conn1 = xac.getConnection();
>     System.out.println("This is a bug. Connection's holdability should
> have been CLOSE_CURSORS_AT_COMMIT since it is in the global
> transaction");
>     System.out.println("CONNECTION(in xa transaction) HOLDABILITY " +
> (conn1.getHoldability() == ResultSet.HOLD_CURSORS_OVER_COMMIT));
>     System.out.println("Autocommit on Connection inside global
> transaction has been set correctly to " + conn1.getAutoCommit());
>     xr.end(xid, XAResource.TMSUCCESS);
> The output for the above piece of code is
>     This is a bug. Connection's holdability should have been
> CLOSE_CURSORS_AT_COMMIT since it is in the global transaction
>     CONNECTION(in xa transaction) HOLDABILITY true
>     Autocommit on Connection inside global transaction has been set
> correctly to false

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://nagoya.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira