Author: dwoods
Date: Thu Apr 8 17:39:18 2010
New Revision: 932025
URL: http://svn.apache.org/viewvc?rev=932025&view=rev
Log:
OPENJPA-1616 Fix TestTimeoutException test failures on MySQL
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java?rev=932025&r1=932024&r2=932025&view=diff
==============================================================================
---
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java
(original)
+++
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java
Thu Apr 8 17:39:18 2010
@@ -27,6 +27,7 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
@@ -423,6 +424,23 @@ public class MySQLDictionary
}
@Override
+ protected int matchErrorState(Map<Integer,Set<String>> errorStates,
SQLException ex) {
+ int state = super.matchErrorState(errorStates, ex);
+ if (state == StoreException.GENERAL && ex.getErrorCode() == 0 &&
ex.getSQLState() == null) {
+ // look at the nested MySQL exception for more details
+ SQLException sqle = ex.getNextException();
+ if (sqle != null &&
sqle.toString().startsWith("com.mysql.jdbc.exceptions.MySQLTimeoutException")) {
+ if (conf != null && conf.getLockTimeout() != -1) {
+ state = StoreException.LOCK;
+ } else {
+ state = StoreException.QUERY;
+ }
+ }
+ }
+ return state;
+ }
+
+ @Override
public boolean isFatalException(int subtype, SQLException ex) {
if ((subtype == StoreException.LOCK && ex.getErrorCode() == 1205)
||(subtype == StoreException.QUERY && ex.getErrorCode() == 1317)) {