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