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 2013/06/24 17:24:34 UTC

svn commit: r1496092 - in /manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database: DBInterfacePostgreSQL.java Database.java

Author: kwright
Date: Mon Jun 24 15:24:33 2013
New Revision: 1496092

URL: http://svn.apache.org/r1496092
Log:
Fix CONNECTORS-734 a different way, since it is clear that the first fix was incorrect.

Modified:
    manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfacePostgreSQL.java
    manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/Database.java

Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfacePostgreSQL.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfacePostgreSQL.java?rev=1496092&r1=1496091&r2=1496092&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfacePostgreSQL.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfacePostgreSQL.java Mon Jun 24 15:24:33 2013
@@ -1230,32 +1230,19 @@ public class DBInterfacePostgreSQL exten
     // We really can't retry at this level; it's not clear what the transaction nesting is etc.
     // So if the EXPLAIN fails due to deadlock, we just give up.
     IResultSet x;
-    try
-    {
-      String queryType = "EXPLAIN ";
-      if ("SELECT".equalsIgnoreCase(query.substring(0,6)))
-        queryType += "ANALYZE ";
-      x = executeUncachedQuery(queryType+query,params,true,
-        -1,null,null);
-      for (int k = 0; k < x.getRowCount(); k++)
-      {
-        IResultRow row = x.getRow(k);
-        Iterator<String> iter = row.getColumns();
-        String colName = (String)iter.next();
-        Logging.db.warn(" Plan: "+row.getValue(colName).toString());
-      }
-      Logging.db.warn("");
-    }
-    catch (ManifoldCFException e)
-    {
-      if (e.getErrorCode() == e.DATABASE_TRANSACTION_ABORT)
-      {
-        if (Logging.perf.isDebugEnabled())
-          Logging.perf.debug("Aborted transaction generating EXPLAIN: "+e.getMessage());
-      }
-      else
-        throw e;
+    String queryType = "EXPLAIN ";
+    if ("SELECT".equalsIgnoreCase(query.substring(0,6)))
+      queryType += "ANALYZE ";
+    x = executeUncachedQuery(queryType+query,params,true,
+      -1,null,null);
+    for (int k = 0; k < x.getRowCount(); k++)
+    {
+      IResultRow row = x.getRow(k);
+      Iterator<String> iter = row.getColumns();
+      String colName = (String)iter.next();
+      Logging.db.warn(" Plan: "+row.getValue(colName).toString());
     }
+    Logging.db.warn("");
 
     if (query.indexOf("jobqueue") != -1)
     {

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=1496092&r1=1496091&r2=1496092&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 Mon Jun 24 15:24:33 2013
@@ -1450,7 +1450,11 @@ public abstract class Database
           }
           catch (ManifoldCFException e)
           {
-            Logging.db.error("Explain failed with error "+e.getMessage(),e);
+            // We need to know if explain generated a TRANSACTION_ABORT.  If so we have to rethrow it.
+            if (e.getErrorCode() == e.DATABASE_TRANSACTION_ABORT || e.getErrorCode() == e.INTERRUPTED)
+              throw e;
+            // Eat the exception
+            Logging.db.warn("Explain failed with error "+e.getMessage(),e);
           }
 
         }