Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2013-03-11 14:38:22 +0000
committerEike Stepper2013-03-11 14:38:22 +0000
commit009e556a0fda4a93b878bbc7f99115f7f9e6b047 (patch)
tree468a1bad4ecf02d6e6bc2947cbb4b93856c4ad46 /plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/ExternalReferenceManager.java
parent95e9abf2c58f24f845ca8e771701a7c937095cee (diff)
downloadcdo-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.java25
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);
}
}

Back to the top