You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by sr...@apache.org on 2008/08/12 01:51:49 UTC

svn commit: r684988 - in /lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl: common/IOUtils.java model/jdbc/AbstractJDBCDataModel.java recommender/slopeone/jdbc/AbstractJDBCDiffStorage.java

Author: srowen
Date: Mon Aug 11 16:51:49 2008
New Revision: 684988

URL: http://svn.apache.org/viewvc?rev=684988&view=rev
Log:
Some modest improvements to use of JDBC -- better use of prepared statement and reuse of connections in some situations.

Modified:
    lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/IOUtils.java
    lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractJDBCDataModel.java
    lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/jdbc/AbstractJDBCDiffStorage.java

Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/IOUtils.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/IOUtils.java?rev=684988&r1=684987&r2=684988&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/IOUtils.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/IOUtils.java Mon Aug 11 16:51:49 2008
@@ -88,7 +88,7 @@
    * @param statement {@link Statement} to close
    * @param connection {@link Connection} to close
    */
-  public static void safeClose(ResultSet resultSet, Statement statement, Connection connection) {
+  public static void quietClose(ResultSet resultSet, Statement statement, Connection connection) {
     quietClose(resultSet);
     quietClose(statement);
     quietClose(connection);

Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractJDBCDataModel.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractJDBCDataModel.java?rev=684988&r1=684987&r2=684988&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractJDBCDataModel.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractJDBCDataModel.java Mon Aug 11 16:51:49 2008
@@ -218,7 +218,7 @@
       log.warn("Exception while retrieving user", sqle);
       throw new TasteException(sqle);
     } finally {
-      IOUtils.safeClose(rs, stmt, conn);
+      IOUtils.quietClose(rs, stmt, conn);
     }
 
   }
@@ -260,7 +260,7 @@
       log.warn("Exception while retrieving item", sqle);
       throw new TasteException(sqle);
     } finally {
-      IOUtils.safeClose(rs, stmt, conn);
+      IOUtils.quietClose(rs, stmt, conn);
     }
   }
 
@@ -298,7 +298,7 @@
       log.warn("Exception while retrieving prefs for item", sqle);
       throw new TasteException(sqle);
     } finally {
-      IOUtils.safeClose(rs, stmt, conn);
+      IOUtils.quietClose(rs, stmt, conn);
     }
   }
 
@@ -347,7 +347,7 @@
       log.warn("Exception while retrieving number of " + name, sqle);
       throw new TasteException(sqle);
     } finally {
-      IOUtils.safeClose(rs, stmt, conn);
+      IOUtils.quietClose(rs, stmt, conn);
     }
   }
 
@@ -383,7 +383,7 @@
       log.warn("Exception while setting preference", sqle);
       throw new TasteException(sqle);
     } finally {
-      IOUtils.safeClose(null, stmt, conn);
+      IOUtils.quietClose(null, stmt, conn);
     }
   }
 
@@ -412,7 +412,7 @@
       log.warn("Exception while removing preference", sqle);
       throw new TasteException(sqle);
     } finally {
-      IOUtils.safeClose(null, stmt, conn);
+      IOUtils.quietClose(null, stmt, conn);
     }
   }
 
@@ -473,17 +473,17 @@
   private final class ResultSetUserIterator implements Iterator<User> {
 
     private final Connection connection;
-    private final Statement statement;
+    private final PreparedStatement statement;
     private final ResultSet resultSet;
     private boolean closed;
 
     private ResultSetUserIterator(DataSource dataSource, String getUsersSQL) throws TasteException {
       try {
         connection = dataSource.getConnection();
-        statement = connection.createStatement();
+        statement = connection.prepareStatement(getUsersSQL);
         statement.setFetchDirection(ResultSet.FETCH_UNKNOWN);
         log.debug("Executing SQL query: {}", getUsersSQL);
-        resultSet = statement.executeQuery(getUsersSQL);
+        resultSet = statement.executeQuery();
       } catch (SQLException sqle) {
         close();
         throw new TasteException(sqle);
@@ -558,7 +558,7 @@
 
     private void close() {
       closed = true;
-      IOUtils.safeClose(resultSet, statement, connection);
+      IOUtils.quietClose(resultSet, statement, connection);
     }
 
   }
@@ -574,17 +574,17 @@
   private final class ResultSetItemIterator implements Iterator<Item> {
 
     private final Connection connection;
-    private final Statement statement;
+    private final PreparedStatement statement;
     private final ResultSet resultSet;
     private boolean closed;
 
     private ResultSetItemIterator(DataSource dataSource, String getItemsSQL) throws TasteException {
       try {
         connection = dataSource.getConnection();
-        statement = connection.createStatement();
+        statement = connection.prepareStatement(getItemsSQL);
         statement.setFetchDirection(ResultSet.FETCH_FORWARD);
         log.debug("Executing SQL query: {}", getItemsSQL);
-        resultSet = statement.executeQuery(getItemsSQL);
+        resultSet = statement.executeQuery();
       } catch (SQLException sqle) {
         close();
         throw new TasteException(sqle);
@@ -640,7 +640,7 @@
 
     private void close() {
       closed = true;
-      IOUtils.safeClose(resultSet, statement, connection);
+      IOUtils.quietClose(resultSet, statement, connection);
     }
 
   }

Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/jdbc/AbstractJDBCDiffStorage.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/jdbc/AbstractJDBCDiffStorage.java?rev=684988&r1=684987&r2=684988&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/jdbc/AbstractJDBCDiffStorage.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/jdbc/AbstractJDBCDiffStorage.java Mon Aug 11 16:51:49 2008
@@ -135,7 +135,7 @@
       log.warn("Exception while retrieving diff", sqle);
       throw new TasteException(sqle);
     } finally {
-      IOUtils.safeClose(rs, stmt, conn);
+      IOUtils.quietClose(rs, stmt, conn);
     }
   }
 
@@ -170,7 +170,7 @@
       log.warn("Exception while retrieving diff", sqle);
       throw new TasteException(sqle);
     } finally {
-      IOUtils.safeClose(rs, stmt, conn);
+      IOUtils.quietClose(rs, stmt, conn);
     }
     return result;
   }
@@ -196,7 +196,7 @@
       log.warn("Exception while retrieving average item pref", sqle);
       throw new TasteException(sqle);
     } finally {
-      IOUtils.safeClose(rs, stmt, conn);
+      IOUtils.quietClose(rs, stmt, conn);
     }
   }
 
@@ -208,16 +208,20 @@
       conn = dataSource.getConnection();
       if (remove) {
         stmt = doPartialUpdate(removeDiffSQLs[0], itemID, prefDelta, conn);
+        IOUtils.quietClose(stmt);
         stmt = doPartialUpdate(removeDiffSQLs[1], itemID, prefDelta, conn);
+        IOUtils.quietClose(stmt);
       } else {
         stmt = doPartialUpdate(updateDiffSQLs[0], itemID, prefDelta, conn);
+        IOUtils.quietClose(stmt);        
         stmt = doPartialUpdate(updateDiffSQLs[1], itemID, prefDelta, conn);
+        IOUtils.quietClose(stmt);
       }
     } catch (SQLException sqle) {
       log.warn("Exception while updating item diff", sqle);
       throw new TasteException(sqle);
     } finally {
-      IOUtils.safeClose(null, stmt, conn);
+      IOUtils.quietClose(null, stmt, conn);
     }
   }
 
@@ -254,35 +258,35 @@
       log.warn("Exception while retrieving recommendable items", sqle);
       throw new TasteException(sqle);
     } finally {
-      IOUtils.safeClose(rs, stmt, conn);
+      IOUtils.quietClose(rs, stmt, conn);
     }
   }
 
   private void buildAverageDiffs() throws TasteException {
     Connection conn = null;
-    PreparedStatement stmt = null;
-    try {
-      conn = dataSource.getConnection();
-      stmt = conn.prepareStatement(deleteDiffsSQL);
-      log.debug("Executing SQL update: {}", deleteDiffsSQL);
-      stmt.executeUpdate();
-    } catch (SQLException sqle) {
-      log.warn("Exception while deleting diffs", sqle);
-      throw new TasteException(sqle);
-    } finally {
-      IOUtils.safeClose(null, stmt, conn);
-    }
     try {
       conn = dataSource.getConnection();
-      stmt = conn.prepareStatement(createDiffsSQL);
-      stmt.setInt(1, minDiffCount);
-      log.debug("Executing SQL update: {}", createDiffsSQL);
-      stmt.executeUpdate();
+      PreparedStatement stmt = null;
+      try {
+        stmt = conn.prepareStatement(deleteDiffsSQL);
+        log.debug("Executing SQL update: {}", deleteDiffsSQL);
+        stmt.executeUpdate();
+      } finally {
+        IOUtils.quietClose(stmt);
+      }
+      try {
+        stmt = conn.prepareStatement(createDiffsSQL);
+        stmt.setInt(1, minDiffCount);
+        log.debug("Executing SQL update: {}", createDiffsSQL);
+        stmt.executeUpdate();
+      } finally {
+        IOUtils.quietClose(stmt);
+      }
     } catch (SQLException sqle) {
-      log.warn("Exception while creating diffs", sqle);
+      log.warn("Exception while updating/deleting diffs", sqle);
       throw new TasteException(sqle);
     } finally {
-      IOUtils.safeClose(null, stmt, conn);
+      IOUtils.quietClose(conn);
     }
   }
 
@@ -301,7 +305,7 @@
       log.warn("Exception while deleting diffs", sqle);
       throw new TasteException(sqle);
     } finally {
-      IOUtils.safeClose(rs, stmt, conn);
+      IOUtils.quietClose(rs, stmt, conn);
     }
   }