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.net4j.db
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.net4j.db')
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBDatabase.java10
1 files changed, 7 insertions, 3 deletions
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBDatabase.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBDatabase.java
index 09f7973580..0d15706d0d 100644
--- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBDatabase.java
+++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBDatabase.java
@@ -80,8 +80,6 @@ public final class DBDatabase extends SetContainer<IDBTransaction> implements ID
public DBSchemaTransaction openSchemaTransaction()
{
- beginSchemaAccess(true);
-
DBSchemaTransaction schemaTransaction = new DBSchemaTransaction(this);
this.schemaTransaction = schemaTransaction;
return schemaTransaction;
@@ -91,6 +89,8 @@ public final class DBDatabase extends SetContainer<IDBTransaction> implements ID
{
try
{
+ beginSchemaAccess(true);
+
for (IDBTransaction transaction : getTransactions())
{
((DBTransaction)transaction).invalidateStatementCache();
@@ -194,6 +194,10 @@ public final class DBDatabase extends SetContainer<IDBTransaction> implements ID
ReadSchemaAccess readSchemaAccess = (ReadSchemaAccess)schemaAccess;
readSchemaAccess.incrementReaders();
}
+ else
+ {
+ schemaAccess = null;
+ }
}
if (schemaAccess == null)
@@ -256,7 +260,7 @@ public final class DBDatabase extends SetContainer<IDBTransaction> implements ID
*/
private final class ReadSchemaAccess implements SchemaAccess
{
- private int readers;
+ private int readers = 1;
public void incrementReaders()
{

Back to the top