db-derby-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kahat...@apache.org
Subject svn commit: r588202 - in /db/derby/code/trunk/java: engine/org/apache/derby/impl/sql/conn/ testing/org/apache/derbyTesting/functionTests/master/
Date Thu, 25 Oct 2007 11:26:25 GMT
Author: kahatlen
Date: Thu Oct 25 04:26:24 2007
New Revision: 588202

URL: http://svn.apache.org/viewvc?rev=588202&view=rev
Log:
DERBY-3093: Intermittent transaction failure caused by internal duplicate savepoint name for
triggers

Use LanguageConnectionContext.getUniqueSavepointName() to get a name
that is unique within the transaction instead of a globally unique
name. This removes a global synchronization point.

Contributed by James F. Adams.

Modified:
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/conn/GenericStatementContext.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/savepointJdbc30_JSR169.out
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/savepointJdbc30_XA.out

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/conn/GenericStatementContext.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/conn/GenericStatementContext.java?rev=588202&r1=588201&r2=588202&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/conn/GenericStatementContext.java
(original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/conn/GenericStatementContext.java
Thu Oct 25 04:26:24 2007
@@ -96,9 +96,6 @@
 	*/
 	private short			sqlAllowed = -1;
 
-    // Counter used to create unique savepoint names.
-    private static long nextNameId = Long.MIN_VALUE;
-
 	/*
 	   constructor
 		@param tc transaction
@@ -108,25 +105,14 @@
 		super(lcc.getContextManager(), org.apache.derby.iapi.reference.ContextId.LANG_STATEMENT);
 		this.lcc = lcc;
 
-        internalSavePointName = createInternalSavepointName();
-
 		if (SanityManager.DEBUG)
 		{
 			SanityManager.ASSERT((lcc != null),
 					"Failed to get language connection context");
 		}
 
+        internalSavePointName = lcc.getUniqueSavepointName();
 	}
-
-    /**
-     * Generate a unique name for this savepoint.
-     * This method should only be called from the constructor.
-     *
-     * @return the savepoint name.
-     */
-    private synchronized static String createInternalSavepointName() {
-        return "ISSP" + nextNameId++;
-    }
 
     /**
      * This is a TimerTask that is responsible for timing out statements,

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/savepointJdbc30_JSR169.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/savepointJdbc30_JSR169.out?rev=588202&r1=588201&r2=588202&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/savepointJdbc30_JSR169.out
(original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/savepointJdbc30_JSR169.out
Thu Oct 25 04:26:24 2007
@@ -79,8 +79,8 @@
 Test41b - Rollback to a savepoint, then try to rollback savepoint created after that savepoint
 Expected Exception is SAVEPOINT, s2 does not  exist or is not active in the current transaction.
 Test42 - Rollback/commit the transaction, then try to use savepoint from that transaction
-Expected Exception is SAVEPOINT, SAVEPT5 does not  exist or is not active in the current
transaction.
 Expected Exception is SAVEPOINT, SAVEPT6 does not  exist or is not active in the current
transaction.
+Expected Exception is SAVEPOINT, SAVEPT7 does not  exist or is not active in the current
transaction.
 Test43 - Release and reuse a savepoint name
 Expected Exception is A SAVEPOINT with the passed name already exists in the current transaction.
 Test 45 reuse savepoint name after rollback - should not work
@@ -91,11 +91,11 @@
 Expected Exception is ResultSet not open. Operation 'next' not permitted. Verify that autocommit
is OFF.
 Expected Exception is ResultSet not open. Operation 'next' not permitted. Verify that autocommit
is OFF.
 Test 47 multiple tests for getSavepointId()
-8
 9
 10
 11
 12
+13
 Test 48 No nested SQL savepoints allowed.
 Following SQL savepoint will fail because we are trying to nest it inside JDBC savepoint
 Expected Exception is The maximum number of savepoints has been reached. 

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/savepointJdbc30_XA.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/savepointJdbc30_XA.out?rev=588202&r1=588201&r2=588202&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/savepointJdbc30_XA.out
(original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/savepointJdbc30_XA.out
Thu Oct 25 04:26:24 2007
@@ -78,8 +78,8 @@
 Test41b - Rollback to a savepoint, then try to rollback savepoint created after that savepoint
 Expected Exception is SAVEPOINT, s2 does not  exist or is not active in the current transaction.
 Test42 - Rollback/commit the transaction, then try to use savepoint from that transaction
-Expected Exception is SAVEPOINT, SAVEPT5 does not  exist or is not active in the current
transaction.
 Expected Exception is SAVEPOINT, SAVEPT6 does not  exist or is not active in the current
transaction.
+Expected Exception is SAVEPOINT, SAVEPT7 does not  exist or is not active in the current
transaction.
 Test43 - Release and reuse a savepoint name
 Expected Exception is A SAVEPOINT with the passed name already exists in the current transaction.
 Test 45 reuse savepoint name after rollback - should not work
@@ -90,11 +90,11 @@
 Expected Exception is ResultSet not open. Operation 'next' not permitted. Verify that autocommit
is OFF.
 Expected Exception is ResultSet not open. Operation 'next' not permitted. Verify that autocommit
is OFF.
 Test 47 multiple tests for getSavepointId()
-8
 9
 10
 11
 12
+13
 Test 48 No nested SQL savepoints allowed.
 Following SQL savepoint will fail because we are trying to nest it inside JDBC savepoint
 Expected Exception is The maximum number of savepoints has been reached. 



Mime
View raw message