diff options
author | Eike Stepper | 2013-03-11 14:38:22 +0000 |
---|---|---|
committer | Eike Stepper | 2013-03-11 14:38:22 +0000 |
commit | 009e556a0fda4a93b878bbc7f99115f7f9e6b047 (patch) | |
tree | 468a1bad4ecf02d6e6bc2947cbb4b93856c4ad46 /plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ExternalReferenceManager.java | |
parent | 95e9abf2c58f24f845ca8e771701a7c937095cee (diff) | |
download | cdo-009e556a0fda4a93b878bbc7f99115f7f9e6b047.tar.gz cdo-009e556a0fda4a93b878bbc7f99115f7f9e6b047.tar.xz cdo-009e556a0fda4a93b878bbc7f99115f7f9e6b047.zip |
[401763] Make CDO Server more robust against data dictionary changes
https://bugs.eclipse.org/bugs/show_bug.cgi?id=401763
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ExternalReferenceManager.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ExternalReferenceManager.java | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ExternalReferenceManager.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ExternalReferenceManager.java index 0b006126db..0f9464a73a 100644 --- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ExternalReferenceManager.java +++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ExternalReferenceManager.java @@ -21,8 +21,6 @@ import org.eclipse.emf.cdo.server.StoreThreadLocal; import org.eclipse.emf.cdo.server.db.IDBStore; import org.eclipse.emf.cdo.server.db.IDBStoreAccessor; import org.eclipse.emf.cdo.server.db.IIDHandler; -import org.eclipse.emf.cdo.server.db.IPreparedStatementCache; -import org.eclipse.emf.cdo.server.db.IPreparedStatementCache.ReuseProbability; import org.eclipse.emf.cdo.server.internal.db.bundle.OM; import org.eclipse.net4j.db.DBException; @@ -30,6 +28,7 @@ import org.eclipse.net4j.db.DBType; import org.eclipse.net4j.db.DBUtil; import org.eclipse.net4j.db.IDBDatabase; import org.eclipse.net4j.db.IDBDatabase.RunnableWithSchema; +import org.eclipse.net4j.db.IDBPreparedStatement.ReuseProbability; import org.eclipse.net4j.db.ddl.IDBIndex; import org.eclipse.net4j.db.ddl.IDBSchema; import org.eclipse.net4j.db.ddl.IDBTable; @@ -111,16 +110,14 @@ public class ExternalReferenceManager extends Lifecycle public String unmapURI(IDBStoreAccessor accessor, long mappedId) { - IPreparedStatementCache statementCache = accessor.getStatementCache(); - PreparedStatement stmt = null; + PreparedStatement stmt = accessor.getDBTransaction().prepareStatement(sqlSelectByLongID, ReuseProbability.HIGH); ResultSet resultSet = null; try { - stmt = statementCache.getPreparedStatement(sqlSelectByLongID, ReuseProbability.HIGH); stmt.setLong(1, mappedId); - resultSet = stmt.executeQuery(); + resultSet = stmt.executeQuery(); if (!resultSet.next()) { OM.LOG.error("External ID " + mappedId + " not found. Database inconsistent!"); @@ -136,23 +133,20 @@ public class ExternalReferenceManager extends Lifecycle finally { DBUtil.close(resultSet); - statementCache.releasePreparedStatement(stmt); + DBUtil.close(stmt); } } public long lookupByURI(IDBStoreAccessor accessor, String uri) { - IPreparedStatementCache statementCache = accessor.getStatementCache(); - PreparedStatement stmt = null; + PreparedStatement stmt = accessor.getDBTransaction().prepareStatement(sqlSelectByURI, ReuseProbability.HIGH); ResultSet resultSet = null; try { - stmt = statementCache.getPreparedStatement(sqlSelectByURI, ReuseProbability.HIGH); stmt.setString(1, uri); resultSet = stmt.executeQuery(); - if (resultSet.next()) { return resultSet.getLong(1); @@ -168,7 +162,7 @@ public class ExternalReferenceManager extends Lifecycle finally { DBUtil.close(resultSet); - statementCache.releasePreparedStatement(stmt); + DBUtil.close(stmt); } } @@ -253,13 +247,10 @@ public class ExternalReferenceManager extends Lifecycle private long insertNew(IDBStoreAccessor accessor, String uri, long commitTime) { long newMappedID = lastMappedID.decrementAndGet(); - - IPreparedStatementCache statementCache = accessor.getStatementCache(); - PreparedStatement stmt = null; + PreparedStatement stmt = accessor.getDBTransaction().prepareStatement(sqlInsert, ReuseProbability.MEDIUM); try { - stmt = statementCache.getPreparedStatement(sqlInsert, ReuseProbability.MEDIUM); stmt.setLong(1, newMappedID); stmt.setString(2, uri); stmt.setLong(3, commitTime); @@ -273,7 +264,7 @@ public class ExternalReferenceManager extends Lifecycle } finally { - statementCache.releasePreparedStatement(stmt); + DBUtil.close(stmt); } } |