You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by re...@apache.org on 2015/11/10 10:35:07 UTC
svn commit: r1713599 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/plugins/document/rdb/
test/java/org/apache/jackrabbit/oak/plugins/document/rdb/
Author: reschke
Date: Tue Nov 10 09:35:07 2015
New Revision: 1713599
URL: http://svn.apache.org/viewvc?rev=1713599&view=rev
Log:
OAK-3605: RDBBlob/DocumentStore: reduce class complexity (WIP)
Move non-connection related methods out of RDBConnectionHandler
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBConnectionHandler.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStoreFriend.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java?rev=1713599&r1=1713598&r2=1713599&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java Tue Nov 10 09:35:07 2015
@@ -16,6 +16,9 @@
*/
package org.apache.jackrabbit.oak.plugins.document.rdb;
+import static org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeResultSet;
+import static org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeStatement;
+
import java.io.Closeable;
import java.io.IOException;
import java.security.MessageDigest;
@@ -84,7 +87,7 @@ public class RDBBlobStore extends Cachin
stmt = null;
con.commit();
} catch (SQLException ex) {
- this.ch.closeStatement(stmt);
+ closeStatement(stmt);
LOG.debug("attempting to drop: " + tname);
}
} catch (SQLException ex) {
@@ -186,7 +189,7 @@ public class RDBBlobStore extends Cachin
con.commit();
tablesPresent.add(tableName);
} catch (SQLException ex) {
- this.ch.closeStatement(checkStatement);
+ closeStatement(checkStatement);
// table does not appear to exist
con.rollback();
@@ -226,7 +229,7 @@ public class RDBBlobStore extends Cachin
this.callStack = LOG.isDebugEnabled() ? new Exception("call stack of RDBBlobStore creation") : null;
} finally {
- this.ch.closeStatement(createStatement);
+ closeStatement(createStatement);
this.ch.closeConnection(con);
}
}
@@ -420,7 +423,7 @@ public class RDBBlobStore extends Cachin
prep.executeUpdate();
prep.close();
} finally {
- this.ch.closeStatement(prep);
+ closeStatement(prep);
con.commit();
this.ch.closeConnection(con);
}
@@ -470,10 +473,10 @@ public class RDBBlobStore extends Cachin
minLastModified = 0;
return count;
} finally {
- this.ch.closeResultSet(rs);
- this.ch.closeStatement(prepCheck);
- this.ch.closeStatement(prepDelMeta);
- this.ch.closeStatement(prepDelData);
+ closeResultSet(rs);
+ closeStatement(prepCheck);
+ closeStatement(prepDelMeta);
+ closeStatement(prepDelData);
con.commit();
this.ch.closeConnection(con);
}
@@ -522,13 +525,9 @@ public class RDBBlobStore extends Cachin
count = prepMeta.executeUpdate();
prepData.execute();
- prepMeta.close();
- prepMeta = null;
- prepData.close();
- prepData = null;
} finally {
- this.ch.closeStatement(prepMeta);
- this.ch.closeStatement(prepData);
+ closeStatement(prepMeta);
+ closeStatement(prepData);
con.commit();
this.ch.closeConnection(con);
}
@@ -612,8 +611,8 @@ public class RDBBlobStore extends Cachin
rs = null;
return !results.isEmpty();
} finally {
- this.ch.closeResultSet(rs);
- this.ch.closeStatement(prep);
+ closeResultSet(rs);
+ closeStatement(prep);
connection.commit();
this.ch.closeConnection(connection);
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBConnectionHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBConnectionHandler.java?rev=1713599&r1=1713598&r2=1713599&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBConnectionHandler.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBConnectionHandler.java Tue Nov 10 09:35:07 2015
@@ -18,7 +18,6 @@ package org.apache.jackrabbit.oak.plugin
import java.io.Closeable;
import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -112,42 +111,6 @@ public class RDBConnectionHandler implem
}
/**
- * Closes a {@link Statement}, logging potential problems.
- * @return null
- */
- public <T extends Statement> T closeStatement(@CheckForNull T stmt) {
- if (stmt != null) {
- try {
- stmt.close();
- } catch (SQLException ex) {
- LOG.debug("Closing statement", ex);
- }
- }
- return null;
- }
-
- /**
- * Closes a {@link ResultSet}, logging potential problems.
- *
- * @return null
- */
- public ResultSet closeResultSet(@CheckForNull ResultSet rs) {
- if (rs != null) {
- try {
- rs.close();
- } catch (SQLException ex) {
- LOG.debug("Closing result set", ex);
- }
- }
-
- return null;
- }
-
- public boolean isClosed() {
- return this.ds == null;
- }
-
- /**
* Return current schema name or {@code null} when unavailable
*/
@CheckForNull
@@ -160,12 +123,17 @@ public class RDBConnectionHandler implem
}
}
+ public boolean isClosed() {
+ return this.ds == null;
+ }
+
@Override
public void close() throws IOException {
this.ds = null;
this.closedTime = System.currentTimeMillis();
}
+ @Nonnull
private DataSource getDataSource() throws IllegalStateException {
DataSource result = this.ds;
if (result == null) {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1713599&r1=1713598&r2=1713599&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java Tue Nov 10 09:35:07 2015
@@ -18,6 +18,8 @@ package org.apache.jackrabbit.oak.plugin
import static com.google.common.base.Preconditions.checkNotNull;
import static org.apache.jackrabbit.oak.plugins.document.UpdateUtils.checkConditions;
+import static org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeResultSet;
+import static org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeStatement;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -342,8 +344,8 @@ public class RDBDocumentStore implements
LOG.error("", ex);
throw new DocumentStoreException(ex);
} finally {
- this.ch.closeResultSet(rs);
- this.ch.closeStatement(stmt);
+ closeResultSet(rs);
+ closeStatement(stmt);
this.ch.closeConnection(connection);
}
}
@@ -416,7 +418,7 @@ public class RDBDocumentStore implements
} catch (SQLException ex) {
LOG.debug("attempting to drop: " + tname, ex);
} finally {
- this.ch.closeStatement(stmt);
+ closeStatement(stmt);
}
} catch (SQLException ex) {
LOG.debug("attempting to drop: " + tname, ex);
@@ -565,7 +567,7 @@ public class RDBDocumentStore implements
con.commit();
}
finally {
- this.ch.closeStatement(stmt);
+ closeStatement(stmt);
}
}
@@ -715,7 +717,7 @@ public class RDBDocumentStore implements
// well it was best-effort
return "";
} finally {
- this.ch.closeResultSet(rs);
+ closeResultSet(rs);
}
}
@@ -786,9 +788,9 @@ public class RDBDocumentStore implements
}
}
finally {
- this.ch.closeResultSet(checkResultSet);
- this.ch.closeStatement(checkStatement);
- this.ch.closeStatement(creatStatement);
+ closeResultSet(checkResultSet);
+ closeStatement(checkStatement);
+ closeStatement(creatStatement);
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java?rev=1713599&r1=1713598&r2=1713599&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java Tue Nov 10 09:35:07 2015
@@ -16,6 +16,9 @@
*/
package org.apache.jackrabbit.oak.plugins.document.rdb;
+import static org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeResultSet;
+import static org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeStatement;
+
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
@@ -96,8 +99,8 @@ public enum RDBDocumentStoreDB {
} catch (SQLException ex) {
LOG.debug("while getting diagnostics", ex);
} finally {
- ch.closeResultSet(rs);
- ch.closeStatement(stmt);
+ closeResultSet(rs);
+ closeStatement(stmt);
ch.closeConnection(con);
}
return result.toString();
@@ -162,8 +165,8 @@ public enum RDBDocumentStoreDB {
} catch (SQLException ex) {
LOG.debug("while getting diagnostics", ex);
} finally {
- ch.closeResultSet(rs);
- ch.closeStatement(stmt);
+ closeResultSet(rs);
+ closeStatement(stmt);
ch.closeConnection(con);
}
return result.toString();
@@ -208,8 +211,8 @@ public enum RDBDocumentStoreDB {
} catch (SQLException ex) {
LOG.debug("while getting diagnostics", ex);
} finally {
- ch.closeResultSet(rs);
- ch.closeStatement(stmt);
+ closeResultSet(rs);
+ closeStatement(stmt);
ch.closeConnection(con);
}
return result.toString();
@@ -264,8 +267,8 @@ public enum RDBDocumentStoreDB {
} catch (SQLException ex) {
LOG.debug("while getting diagnostics", ex);
} finally {
- ch.closeResultSet(rs);
- ch.closeStatement(stmt);
+ closeResultSet(rs);
+ closeStatement(stmt);
ch.closeConnection(con);
}
return result.toString();
@@ -325,8 +328,8 @@ public enum RDBDocumentStoreDB {
} catch (SQLException ex) {
LOG.debug("while getting diagnostics", ex);
} finally {
- ch.closeResultSet(rs);
- ch.closeStatement(stmt);
+ closeResultSet(rs);
+ closeStatement(stmt);
ch.closeConnection(con);
}
return result.toString();
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java?rev=1713599&r1=1713598&r2=1713599&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java Tue Nov 10 09:35:07 2015
@@ -18,8 +18,10 @@ package org.apache.jackrabbit.oak.plugin
import java.sql.Connection;
import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
+import java.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
@@ -27,13 +29,18 @@ import java.util.Locale;
import java.util.Map;
import java.util.TreeMap;
+import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
+import org.slf4j.LoggerFactory;
+
/**
* Convenience methods dealing with JDBC specifics.
*/
public class RDBJDBCTools {
+ private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(RDBJDBCTools.class);
+
protected static String jdbctype(String jdbcurl) {
if (jdbcurl == null) {
return null;
@@ -202,4 +209,35 @@ public class RDBJDBCTools {
return "";
}
}
+
+ /**
+ * Closes a {@link Statement}, logging potential problems.
+ * @return null
+ */
+ protected static <T extends Statement> T closeStatement(@CheckForNull T stmt) {
+ if (stmt != null) {
+ try {
+ stmt.close();
+ } catch (SQLException ex) {
+ LOG.debug("Closing statement", ex);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Closes a {@link ResultSet}, logging potential problems.
+ * @return null
+ */
+ protected static ResultSet closeResultSet(@CheckForNull ResultSet rs) {
+ if (rs != null) {
+ try {
+ rs.close();
+ } catch (SQLException ex) {
+ LOG.debug("Closing result set", ex);
+ }
+ }
+
+ return null;
+ }
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStoreFriend.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStoreFriend.java?rev=1713599&r1=1713598&r2=1713599&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStoreFriend.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStoreFriend.java Tue Nov 10 09:35:07 2015
@@ -16,6 +16,8 @@
*/
package org.apache.jackrabbit.oak.plugins.document.rdb;
+import static org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeStatement;
+
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -40,10 +42,8 @@ public class RDBBlobStoreFriend {
prepDelMeta = con.prepareStatement("delete from " + ds.tnMeta + " where ID = ?");
prepDelMeta.setString(1, id);
prepDelMeta.execute();
- prepDelMeta.close();
- prepDelMeta = null;
} finally {
- ds.ch.closeStatement(prepDelMeta);
+ closeStatement(prepDelMeta);
con.commit();
ds.ch.closeConnection(con);
}