Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2018-05-09 05:28:31 +0000
committerEike Stepper2018-05-09 05:28:31 +0000
commit840c559bc742b78a60776251ea7d94e3278dec1f (patch)
tree8f6c8c05ef783791507c369000bf46fb3e14161b /plugins/org.eclipse.emf.cdo.tests.db
parentb70b6c5b403624ea30c47c82ceea40c55536670e (diff)
downloadcdo-840c559bc742b78a60776251ea7d94e3278dec1f.tar.gz
cdo-840c559bc742b78a60776251ea7d94e3278dec1f.tar.xz
cdo-840c559bc742b78a60776251ea7d94e3278dec1f.zip
[534438] Too many errors like java.lang.IllegalStateException: SELECT CDO_CLASS FROM CDO_OBJECTS WHERE CDO_ID=? already in cache
https://bugs.eclipse.org/bugs/show_bug.cgi?id=534438
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.tests.db')
-rw-r--r--plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/DBConfigs.java13
-rw-r--r--plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/bugzilla/Bugzilla_351068_Test.java (renamed from plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/Bugzilla_351068_Test.java)2
-rw-r--r--plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/bugzilla/Bugzilla_396743_Test.java (renamed from plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/Bugzilla_396743_Test.java)3
-rw-r--r--plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/bugzilla/Bugzilla_527002_Test.java (renamed from plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/Bugzilla_527002_Test.java)3
-rw-r--r--plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/bugzilla/Bugzilla_534438_Test.java70
5 files changed, 85 insertions, 6 deletions
diff --git a/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/DBConfigs.java b/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/DBConfigs.java
index a6ab838900..175dd841bb 100644
--- a/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/DBConfigs.java
+++ b/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/DBConfigs.java
@@ -23,6 +23,8 @@ import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_252214_Test;
import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_303807_Test;
import org.eclipse.emf.cdo.tests.config.IScenario;
import org.eclipse.emf.cdo.tests.config.impl.ConfigTest;
+import org.eclipse.emf.cdo.tests.db.bugzilla.Bugzilla_527002_Test;
+import org.eclipse.emf.cdo.tests.db.bundle.OM;
import java.util.List;
@@ -32,6 +34,14 @@ import java.util.List;
public abstract class DBConfigs extends AllConfigs
{
@Override
+ public List<Class<? extends ConfigTest>> getBugzillaTests()
+ {
+ List<Class<? extends ConfigTest>> tests = super.getBugzillaTests();
+ tests.addAll(getTestClasses(OM.BUNDLE, "org.eclipse.emf.cdo.tests.db.bugzilla"));
+ return tests;
+ }
+
+ @Override
protected void initTestClasses(List<Class<? extends ConfigTest>> testClasses, IScenario scenario)
{
testClasses.add(Net4jDBTest.class);
@@ -39,9 +49,6 @@ public abstract class DBConfigs extends AllConfigs
testClasses.add(DBStoreTest.class);
testClasses.add(CustomTypeMappingTest.class);
testClasses.add(SQLQueryTest.class);
- testClasses.add(Bugzilla_351068_Test.class);
- testClasses.add(Bugzilla_396743_Test.class);
- testClasses.add(Bugzilla_527002_Test.class);
super.initTestClasses(testClasses, scenario);
testClasses.remove(MEMStoreQueryTest.class);
diff --git a/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/Bugzilla_351068_Test.java b/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/bugzilla/Bugzilla_351068_Test.java
index 83f7daa83e..3c8fa768ae 100644
--- a/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/Bugzilla_351068_Test.java
+++ b/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/bugzilla/Bugzilla_351068_Test.java
@@ -8,7 +8,7 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.tests.db;
+package org.eclipse.emf.cdo.tests.db.bugzilla;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.eresource.CDOResource;
diff --git a/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/Bugzilla_396743_Test.java b/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/bugzilla/Bugzilla_396743_Test.java
index 2d1199f066..5ebbea1575 100644
--- a/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/Bugzilla_396743_Test.java
+++ b/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/bugzilla/Bugzilla_396743_Test.java
@@ -8,7 +8,7 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.tests.db;
+package org.eclipse.emf.cdo.tests.db.bugzilla;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.eresource.CDOResource;
@@ -20,6 +20,7 @@ import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.tests.AbstractCDOTest;
import org.eclipse.emf.cdo.tests.config.IRepositoryConfig;
import org.eclipse.emf.cdo.tests.config.impl.ConfigTest.Skips;
+import org.eclipse.emf.cdo.tests.db.DBConfig;
import org.eclipse.emf.cdo.tests.model1.Company;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.util.CDOUtil;
diff --git a/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/Bugzilla_527002_Test.java b/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/bugzilla/Bugzilla_527002_Test.java
index 1620b7033b..a973f967b3 100644
--- a/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/Bugzilla_527002_Test.java
+++ b/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/bugzilla/Bugzilla_527002_Test.java
@@ -8,7 +8,7 @@
* Contributors:
* Eike Stepper - initial API and implementation
*/
-package org.eclipse.emf.cdo.tests.db;
+package org.eclipse.emf.cdo.tests.db.bugzilla;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.server.db.CDODBUtil;
@@ -16,6 +16,7 @@ import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.tests.AbstractCDOTest;
import org.eclipse.emf.cdo.tests.config.IRepositoryConfig;
import org.eclipse.emf.cdo.tests.config.impl.ConfigTest.Skips;
+import org.eclipse.emf.cdo.tests.db.DBConfig;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import java.util.Map;
diff --git a/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/bugzilla/Bugzilla_534438_Test.java b/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/bugzilla/Bugzilla_534438_Test.java
new file mode 100644
index 0000000000..dbdb8736c8
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/bugzilla/Bugzilla_534438_Test.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2018 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.tests.db.bugzilla;
+
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.server.internal.db.DBStore;
+import org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.AbstractHorizontalMappingStrategy;
+import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.tests.AbstractCDOTest;
+import org.eclipse.emf.cdo.tests.model1.Supplier;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
+import org.eclipse.emf.cdo.view.CDOQuery;
+
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import java.util.List;
+
+/**
+ * Bug 534438: Too many errors like java.lang.IllegalStateException: SELECT CDO_CLASS FROM CDO_OBJECTS WHERE CDO_ID=? already in cache.
+ *
+ * @author Eike Stepper
+ */
+public class Bugzilla_534438_Test extends AbstractCDOTest
+{
+ public void testDBConnectionUsedByMultipleThreads() throws Exception
+ {
+ CDOSession session = openSession();
+ CDOTransaction transaction = session.openTransaction();
+
+ for (int i = 0; i < 100; i++)
+ {
+ CDOResource resource = transaction.createResource(getResourcePath("resource-" + i + "-fill.transformation"));
+ resource.getContents().add(getModel1Factory().createSupplier());
+ }
+
+ transaction.commit();
+
+ // Clear revision cache to force ObjectTypeTable to be used.
+ clearCache(getRepository().getRevisionManager());
+
+ // Clear object type cache to force ObjectTypeTable to be used.
+ AbstractHorizontalMappingStrategy mappingStrategy = (AbstractHorizontalMappingStrategy)((DBStore)getRepository().getStore()).getMappingStrategy();
+ LifecycleUtil.deactivate(mappingStrategy.getObjectTypeMapper());
+ LifecycleUtil.activate(mappingStrategy.getObjectTypeMapper());
+
+ CDOQuery query = transaction.createQuery("ocl", "Supplier.allInstances()->select( o | o.oclAsType(ecore::EObject).eResource()."
+ + "oclAsType(eresource::CDOResource).name.endsWith('-fill.transformation'))", getModel1Package().getSupplier());
+
+ List<Supplier> result = query.getResult();
+ msg(result.size());
+
+ for (Supplier supplier : result)
+ {
+ Resource resource = supplier.eResource();
+ resource.delete(null);
+ }
+
+ transaction.commit();
+ }
+}

Back to the top