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.net4j.db | |
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.net4j.db')
-rw-r--r-- | plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBDatabase.java | 10 |
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() { |