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);
}
}