You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2012/11/28 09:40:09 UTC

svn commit: r1414575 - in /manifoldcf/trunk: CHANGES.txt framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceMySQL.java framework/core/src/main/java/org/apache/manifoldcf/core/database/Database.java

Author: kwright
Date: Wed Nov 28 08:40:08 2012
New Revision: 1414575

URL: http://svn.apache.org/viewvc?rev=1414575&view=rev
Log:
Fix for CONNECTORS-571.  Also modified error output for SQLException errors to include SQLState if available.

Modified:
    manifoldcf/trunk/CHANGES.txt
    manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceMySQL.java
    manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/Database.java

Modified: manifoldcf/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/CHANGES.txt?rev=1414575&r1=1414574&r2=1414575&view=diff
==============================================================================
--- manifoldcf/trunk/CHANGES.txt (original)
+++ manifoldcf/trunk/CHANGES.txt Wed Nov 28 08:40:08 2012
@@ -3,6 +3,9 @@ $Id$
 
 ======================= 1.1-dev =====================
 
+CONNECTORS-571: MySQL timeout was not being handled properly.
+(Shigeki Kobayashi, Karl Wright)
+
 CONNECTORS-569: Add User-Agent header for Wiki connector.
 Newer versions of Wiki need this.
 (Karl Wright)

Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceMySQL.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceMySQL.java?rev=1414575&r1=1414574&r2=1414575&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceMySQL.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceMySQL.java Wed Nov 28 08:40:08 2012
@@ -112,6 +112,12 @@ public class DBInterfaceMySQL extends Da
       //new Exception(message).printStackTrace();
       return new ManifoldCFException(message,e,ManifoldCFException.DATABASE_TRANSACTION_ABORT);
     }
+    // Transaction timeout
+    if (sqlState != null && sqlState.equals("HY000"))
+    {
+      //new Exception(message).printStackTrace();
+      return new ManifoldCFException(message,e,ManifoldCFException.DATABASE_TRANSACTION_ABORT);
+    }
     // Note well: We also have to treat 'duplicate key' as a transaction abort, since this is what you get when two threads attempt to
     // insert the same row.  (Everything only works, then, as long as there is a unique constraint corresponding to every bad insert that
     // one could make.)

Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/Database.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/Database.java?rev=1414575&r1=1414574&r2=1414575&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/Database.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/Database.java Wed Nov 28 08:40:08 2012
@@ -853,7 +853,7 @@ public abstract class Database
       {
         // There are a lot of different sorts of error that can be embedded here.  Unfortunately, it's database dependent how
         // to interpret the error.  So toss a generic error, and let the caller figure out if it needs to treat it differently.
-        throw new ManifoldCFException("Exception doing query: "+e.getMessage(),e,ManifoldCFException.DATABASE_CONNECTION_ERROR);
+        throw new ManifoldCFException("SQLException doing query"+((e.getSQLState() != null)?" ("+e.getSQLState()+")":"")+": "+e.getMessage(),e,ManifoldCFException.DATABASE_CONNECTION_ERROR);
       }
     }
     finally
@@ -962,7 +962,7 @@ public abstract class Database
       }
       catch (java.sql.SQLException e)
       {
-        throw new ManifoldCFException("Resultset error: "+e.getMessage(),e,ManifoldCFException.DATABASE_CONNECTION_ERROR);
+        throw new ManifoldCFException("SQLException getting resultset"+((e.getSQLState() != null)?" ("+e.getSQLState()+")":"")+": "+e.getMessage(),e,ManifoldCFException.DATABASE_CONNECTION_ERROR);
       }
     }
     catch (Throwable e)
@@ -1101,9 +1101,9 @@ public abstract class Database
     {
       return rs.getBlob(col);
     }
-    catch (java.sql.SQLException sqle)
+    catch (java.sql.SQLException e)
     {
-      throw new ManifoldCFException("Error in getBlob",sqle,ManifoldCFException.DATABASE_CONNECTION_ERROR);
+      throw new ManifoldCFException("SQLException in getBlob"+((e.getSQLState() != null)?" ("+e.getSQLState()+")":"")+": "+e.getMessage(),e,ManifoldCFException.DATABASE_CONNECTION_ERROR);
     }
     catch (Exception sqle)
     {
@@ -1119,9 +1119,9 @@ public abstract class Database
       int type = rsmd.getColumnType(col);
       return (type == java.sql.Types.BLOB);
     }
-    catch (java.sql.SQLException sqle)
+    catch (java.sql.SQLException e)
     {
-      throw new ManifoldCFException("Error in isBlob("+col+"): "+sqle.getMessage(),sqle,ManifoldCFException.DATABASE_CONNECTION_ERROR);
+      throw new ManifoldCFException("SQLException doing isBlob("+col+")"+((e.getSQLState() != null)?" ("+e.getSQLState()+")":"")+": "+e.getMessage(),e,ManifoldCFException.DATABASE_CONNECTION_ERROR);
     }
     catch (Exception sqle)
     {
@@ -1138,9 +1138,9 @@ public abstract class Database
       return (type == java.sql.Types.VARBINARY ||
         type == java.sql.Types.BINARY || type == java.sql.Types.LONGVARBINARY);
     }
-    catch (java.sql.SQLException sqle)
+    catch (java.sql.SQLException e)
     {
-      throw new ManifoldCFException("Error in isBinary("+col+"): "+sqle.getMessage(),sqle,ManifoldCFException.DATABASE_CONNECTION_ERROR);
+      throw new ManifoldCFException("SQLException doing isBinary("+col+")"+((e.getSQLState() != null)?" ("+e.getSQLState()+")":"")+": "+e.getMessage(),e,ManifoldCFException.DATABASE_CONNECTION_ERROR);
     }
     catch (Exception sqle)
     {
@@ -1314,7 +1314,7 @@ public abstract class Database
       }
       catch (java.sql.SQLException e)
       {
-        throw new ManifoldCFException("Exception in getObject(): "+e.getMessage(),e,ManifoldCFException.DATABASE_CONNECTION_ERROR);
+        throw new ManifoldCFException("SQLException doing getObject()"+((e.getSQLState() != null)?" ("+e.getSQLState()+")":"")+": "+e.getMessage(),e,ManifoldCFException.DATABASE_CONNECTION_ERROR);
       }
     }
     catch (Throwable e)