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 ka...@apache.org on 2007/04/26 09:20:05 UTC

svn commit: r532636 - in /db/derby/code/trunk/java: engine/org/apache/derby/impl/store/raw/data/BasePage.java testing/org/apache/derbyTesting/unitTests/store/T_Util.java

Author: kahatlen
Date: Thu Apr 26 00:20:04 2007
New Revision: 532636

URL: http://svn.apache.org/viewvc?view=rev&rev=532636
Log:
DERBY-2107: Move page latching out of the lock manager

Added assert which throws error on attempts to latch the same page twice.

Modified:
    db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/BasePage.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/unitTests/store/T_Util.java

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/BasePage.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/BasePage.java?view=diff&rev=532636&r1=532635&r2=532636
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/BasePage.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/BasePage.java Thu Apr 26 00:20:04 2007
@@ -1563,6 +1563,11 @@
 
 				// just deadlock out if a transaction tries to double latch the
 				// page while not in abort
+
+				if (SanityManager.DEBUG) {
+					SanityManager.THROWASSERT("Attempted to latch page twice");
+				}
+
 			}
 
 			while (owner != null) {

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/unitTests/store/T_Util.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/unitTests/store/T_Util.java?view=diff&rev=532636&r1=532635&r2=532636
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/unitTests/store/T_Util.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/unitTests/store/T_Util.java Thu Apr 26 00:20:04 2007
@@ -35,6 +35,7 @@
 import org.apache.derby.iapi.services.context.ContextManager;
 import org.apache.derby.iapi.services.locks.*;
 import org.apache.derby.iapi.services.sanity.SanityManager;
+import org.apache.derby.shared.common.sanity.AssertFailure;
 
 import org.apache.derby.iapi.error.StandardException;
 
@@ -1161,6 +1162,13 @@
 			// expect thread interrupted exception
 			if (!se.getMessageId().equals("08000")) {
 				throw se;
+			}
+		} catch (AssertFailure af) {
+			// When running in sane mode, an AssertFailure will be thrown if we
+			// try to double latch a page.
+			if (!(SanityManager.DEBUG &&
+				  af.getMessage().endsWith("Attempted to latch page twice"))) {
+				throw af;
 			}
 		}