You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by kr...@apache.org on 2008/04/23 12:15:17 UTC

svn commit: r650814 - /db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/J2EEDataSourceTest.java

Author: kristwaa
Date: Wed Apr 23 03:15:11 2008
New Revision: 650814

URL: http://svn.apache.org/viewvc?rev=650814&view=rev
Log:
DERBY-3431: DatabaseMetaData.getConnection returns the wrong connection when using connection pooling.
Added a test case exposing the bug where DatabaseMetaData.getConnection returns a reference to a connection it should not publish.
Note that the test is disabled, because the bug is still at large.
Patch file: derby-3431-2a-test.diff

Modified:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/J2EEDataSourceTest.java

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/J2EEDataSourceTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/J2EEDataSourceTest.java?rev=650814&r1=650813&r2=650814&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/J2EEDataSourceTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/J2EEDataSourceTest.java Wed Apr 23 03:15:11 2008
@@ -26,6 +26,7 @@
 import java.security.AccessController;
 import java.sql.CallableStatement;
 import java.sql.Connection;
+import java.sql.DatabaseMetaData;
 import java.sql.DriverManager;
 import java.sql.ParameterMetaData;
 import java.sql.PreparedStatement;
@@ -2684,6 +2685,37 @@
         // END XA HOLDABILITY TEST");
     }
     
+    /**
+     * Tests that DatabaseMetaData.getConnection does not leak references to
+     * physical connections or other logical connections.
+     *
+     * @throws SQLException if something goes wrong
+     */
+    // Disabled because the test fails. It fails in different ways for client
+    // and embedded. See DERBY-3431 for information.
+    // To enable, remove 'DISABLED_' from the method name and add the test
+    // to the appropriate suite (i.e. baseSuite).
+    public void DISABLED_testConnectionLeakInDatabaseMetaData()
+            throws SQLException {
+        ConnectionPoolDataSource cpDs =
+                J2EEDataSource.getConnectionPoolDataSource();
+        PooledConnection pc = cpDs.getPooledConnection();
+        // Get first logical connection and a meta data object.
+        Connection con1 = pc.getConnection();
+        DatabaseMetaData dmd1 = con1.getMetaData();
+        assertSame(con1, dmd1.getConnection());
+        con1.close();
+        // Get second logical connection and a meta data object.
+        Connection con2 = pc.getConnection();
+        DatabaseMetaData dmd2 = con2.getMetaData();
+        con2.close();
+        pc.close();
+        // The first meta data object should not return a reference to the
+        // second logical connection.
+        assertSame(con2, dmd2.getConnection());
+        assertNotSame(con2, dmd1.getConnection());
+    }
+
     /**
      * Tests for DERBY-1144
      *