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 mi...@apache.org on 2013/04/23 20:13:30 UTC

svn commit: r1471079 - in /db/derby/code/trunk/java: engine/org/apache/derby/impl/store/raw/xact/Xact.java engine/org/apache/derby/loc/messages.xml shared/org/apache/derby/shared/common/reference/SQLState.java

Author: mikem
Date: Tue Apr 23 18:13:30 2013
New Revision: 1471079

URL: http://svn.apache.org/r1471079
Log:
DERBY-4729 add more information to the XACT_PROTOCOL_VIOLATION returned from sto
re.

When this error is reported it is often hard to reproduce, so adding
printing of internal state of the Transaction when it is hit.  Hopefully
this help in understanding what is going on when the error is hit.


Modified:
    db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/xact/Xact.java
    db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml
    db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/xact/Xact.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/xact/Xact.java?rev=1471079&r1=1471078&r2=1471079&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/xact/Xact.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/xact/Xact.java Tue Apr 23 18:13:30 2013
@@ -757,7 +757,8 @@ public class Xact extends RawTransaction
 		if (state == CLOSED)
         {
 			throw StandardException.newException(
-                    SQLState.XACT_PROTOCOL_VIOLATION);
+                    SQLState.XACT_PROTOCOL_VIOLATION_DETAILED, 
+                    toInternalDetailString());
         }
 
 		if (SanityManager.DEBUG)
@@ -929,7 +930,8 @@ public class Xact extends RawTransaction
 				if (!sanityCheck_xaclosed)
                 {
 					throw StandardException.newException(
-                            SQLState.XACT_PROTOCOL_VIOLATION);
+                                    SQLState.XACT_PROTOCOL_VIOLATION_DETAILED, 
+                                    toInternalDetailString());
                 }
 			}
 
@@ -1041,7 +1043,8 @@ public class Xact extends RawTransaction
 		if (state == CLOSED)
         {
 			throw StandardException.newException(
-                    SQLState.XACT_PROTOCOL_VIOLATION);
+                                    SQLState.XACT_PROTOCOL_VIOLATION_DETAILED, 
+                                    toInternalDetailString());
         }
 
         // Should only be called during recovery on global transactions, 
@@ -1761,7 +1764,8 @@ public class Xact extends RawTransaction
         if (readOnly)
         {
             throw StandardException.newException(
-                SQLState.XACT_PROTOCOL_VIOLATION);
+                                    SQLState.XACT_PROTOCOL_VIOLATION_DETAILED, 
+                                    toInternalDetailString());
         }
 
 		state = UPDATE;
@@ -1821,7 +1825,8 @@ public class Xact extends RawTransaction
         {
             // This is where we catch attempted activity on a prepared xact.
 			throw StandardException.newException(
-                    SQLState.XACT_PROTOCOL_VIOLATION);
+                                SQLState.XACT_PROTOCOL_VIOLATION_DETAILED, 
+                                toInternalDetailString());
         }
 
 		if (SanityManager.DEBUG)
@@ -1880,7 +1885,8 @@ public class Xact extends RawTransaction
 		if (state == PREPARED || state == CLOSED)
         {
 			throw StandardException.newException(
-                    SQLState.XACT_PROTOCOL_VIOLATION);
+                    SQLState.XACT_PROTOCOL_VIOLATION_DETAILED, 
+                    toInternalDetailString());
         }
 
 		if (SanityManager.DEBUG)
@@ -2575,7 +2581,8 @@ public class Xact extends RawTransaction
             if (state == PREPARED)
             {
                 throw StandardException.newException(
-                        SQLState.XACT_PROTOCOL_VIOLATION);
+                        SQLState.XACT_PROTOCOL_VIOLATION_DETAILED, 
+                        toInternalDetailString());
             }
 
             prepareCommit(COMMIT_SYNC);
@@ -2587,7 +2594,8 @@ public class Xact extends RawTransaction
             if (state != PREPARED)
             {
                 throw StandardException.newException(
-                        SQLState.XACT_PROTOCOL_VIOLATION);
+                        SQLState.XACT_PROTOCOL_VIOLATION_DETAILED, 
+                        toInternalDetailString());
             }
 
             prepareCommit(COMMIT_SYNC);
@@ -2695,6 +2703,32 @@ public class Xact extends RawTransaction
         }
 	}
 
+    public String toInternalDetailString()
+    {
+
+	    return (
+            "savedEndStatus = "            + savedEndStatus         + "\n" +
+            "needSync = "                  + needSync               + "\n" +
+            "justCreated = "               + justCreated            + "\n" +
+            "myGlobalId = "                + myGlobalId             + "\n" +
+            "myId = "                      + myId                   + "\n" +
+            "state = "                     + state                  + "\n" +
+            "inComplete = "                + inComplete             + "\n" +
+            "seenUpdates = "               + seenUpdates            + "\n" +
+            "inPostCommitProcessing = "    + inPostCommitProcessing + "\n" +
+            "logStart = "                  + logStart               + "\n" +
+            "logLast = "                   + logLast                + "\n" +
+            "recoveryTransaction = "       + recoveryTransaction    + "\n" +
+            "postCompleteMode = "          + postCompleteMode       + "\n" +
+            "sanityCheck_xaclosed = "      + sanityCheck_xaclosed   + "\n" +
+            "transName = "                 + transName              + "\n" +
+            "readOnly = "                  + readOnly               + "\n" +
+            "flush_log_on_xact_end = "     + flush_log_on_xact_end  + "\n" +
+            "backupBlocked = "             + backupBlocked          + "\n" +
+            "dontWaitForLocks = "          + dontWaitForLocks       + "\n");
+    }
+
+
 	
 	/**
 	 * Get string id of the transaction that would be when the Transaction

Modified: db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml?rev=1471079&r1=1471078&r2=1471079&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml Tue Apr 23 18:13:30 2013
@@ -1106,6 +1106,12 @@ Guide.
                 <text>Operation is not supported in an internal transaction.</text>
             </msg>
 
+            <msg>
+                <name>40XT8</name>
+                <text>An internal error was identified by RawStore module. Internal state detail from the transaction is as follows: {0}</text>
+                <arg>internalTransactionState</arg>
+            </msg>
+
         </family>
 
 

Modified: db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java?rev=1471079&r1=1471078&r2=1471079&view=diff
==============================================================================
--- db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java (original)
+++ db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java Tue Apr 23 18:13:30 2013
@@ -453,6 +453,7 @@ public interface SQLState {
 	String XACT_INTERNAL_TRANSACTION_EXCEPTION                  = "40XT5";
 	String XACT_CANNOT_ACTIVATE_TRANSACTION                     = "40XT6";
 	String XACT_NOT_SUPPORTED_IN_INTERNAL_XACT                  = "40XT7";
+	String XACT_PROTOCOL_VIOLATION_DETAILED                     = "40XT8";
 
 	/*
 	** RawStore - Transactions.Basic system exceptions