diff options
13 files changed, 170 insertions, 93 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server/CDOServer.launch b/plugins/org.eclipse.emf.cdo.server/CDOServer.launch index 0aad895f5f..4b4b8040f4 100644 --- a/plugins/org.eclipse.emf.cdo.server/CDOServer.launch +++ b/plugins/org.eclipse.emf.cdo.server/CDOServer.launch @@ -16,10 +16,10 @@ <stringAttribute key="location" value="${workspace_loc}/../cdo.server"/> <booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/> <listAttribute key="org.eclipse.debug.ui.favoriteGroups"> -<listEntry value="org.eclipse.debug.ui.launchGroup.run"/> <listEntry value="org.eclipse.debug.ui.launchGroup.debug"/> +<listEntry value="org.eclipse.debug.ui.launchGroup.run"/> </listAttribute> -<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.5.0_12"/> +<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.5.0_14"/> <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -debug -console --launcher.XXMaxPermSize 128M"/> <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/> <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddebug=true -Dnet4j.config=${resource_loc:/org.eclipse.emf.cdo.server.product/rootfiles/configuration}"/> @@ -43,8 +43,8 @@ <mapEntry key="org.eclipse.ui/trace/contexts" value="false"/> <mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/> <mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/> -<mapEntry key="org.eclipse.jdt.core/debug" value="true"/> <mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/> +<mapEntry key="org.eclipse.jdt.core/debug" value="true"/> <mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/> <mapEntry key="org.eclipse.net4j.tcp/debug" value="true"/> <mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/> @@ -57,8 +57,8 @@ <mapEntry key="org.eclipse.emf.cdo/debug.util" value="true"/> <mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/> <mapEntry key="org.eclipse.team.core/refreshjob" value="false"/> -<mapEntry key="org.eclipse.ui/debug" value="false"/> <mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/> +<mapEntry key="org.eclipse.ui/debug" value="false"/> <mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/> <mapEntry key="org.eclipse.pde.core/classpath" value="false"/> <mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/> @@ -68,11 +68,11 @@ <mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/> <mapEntry key="org.eclipse.osgi/trace/activation" value="false"/> <mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/> -<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/> <mapEntry key="org.eclipse.team.core/threading" value="false"/> +<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/> <mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/> -<mapEntry key="org.eclipse.emf.cdo.protocol/debug.protocol" value="true"/> <mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/> +<mapEntry key="org.eclipse.emf.cdo.protocol/debug.protocol" value="true"/> <mapEntry key="org.eclipse.ui/trace/graphics" value="false"/> <mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/> <mapEntry key="org.eclipse.net4j.db/debug" value="true"/> @@ -82,15 +82,15 @@ <mapEntry key="org.eclipse.debug.ui/debug" value="false"/> <mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/> <mapEntry key="org.eclipse.help.base/debug/search" value="false"/> -<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/> <mapEntry key="org.eclipse.pde.build/debug" value="false"/> +<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/> <mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/> <mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/> <mapEntry key="org.eclipse.net4j.buddies.protocol/debug" value="true"/> <mapEntry key="org.eclipse.update.core/debug/type" value="false"/> <mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/> -<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/> <mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/> +<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/> <mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/> <mapEntry key="org.eclipse.core.resources/refresh" value="false"/> <mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/> @@ -102,8 +102,8 @@ <mapEntry key="org.eclipse.ui/trace/handlers" value="false"/> <mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/> <mapEntry key="org.eclipse.net4j.buddies/debug" value="true"/> -<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/> <mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/> +<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/> <mapEntry key="org.eclipse.osgi/profile/startup" value="false"/> <mapEntry key="org.eclipse.core.jobs/jobs" value="false"/> <mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/> @@ -119,11 +119,11 @@ <mapEntry key="org.eclipse.net4j/debug.buffer" value="true"/> <mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/> <mapEntry key="org.eclipse.emf.cdo/debug.repository" value="true"/> -<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/> <mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/> +<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/> <mapEntry key="org.eclipse.emf.cdo.examples/debug" value="true"/> -<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/> <mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/> +<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/> <mapEntry key="org.eclipse.ui.ide/debug" value="false"/> <mapEntry key="org.eclipse.osgi/profile/debug" value="false"/> <mapEntry key="org.eclipse.pde.core/debug" value="true"/> @@ -132,17 +132,17 @@ <mapEntry key="org.eclipse.net4j.util/debug.registry" value="true"/> <mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/> <mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/> -<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/> -<mapEntry key="org.eclipse.emf.cdo/debug.object" value="true"/> <mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/> +<mapEntry key="org.eclipse.emf.cdo/debug.object" value="true"/> +<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/> <mapEntry key="org.eclipse.emf.cdo.server/debug.revision" value="true"/> <mapEntry key="org.eclipse.core.resources/strings" value="false"/> <mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/> <mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/> <mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/> -<mapEntry key="org.eclipse.core.resources/preferences" value="false"/> -<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/> <mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/> +<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/> +<mapEntry key="org.eclipse.core.resources/preferences" value="false"/> <mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/> <mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/> <mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/> @@ -154,27 +154,27 @@ <mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/> <mapEntry key="org.eclipse.update.core/debug" value="true"/> <mapEntry key="org.eclipse.osgi/debug/security" value="false"/> -<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/> <mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/> +<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/> <mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/> -<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/> -<mapEntry key="org.eclipse.net4j.db.hsqldb/debug" value="true"/> <mapEntry key="org.eclipse.net4j.jms.admin/debug.protocol" value="true"/> +<mapEntry key="org.eclipse.net4j.db.hsqldb/debug" value="true"/> +<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/> <mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/> -<mapEntry key="org.eclipse.core.resources/history" value="false"/> <mapEntry key="org.eclipse.emf.cdo.server/debug.store" value="true"/> +<mapEntry key="org.eclipse.core.resources/history" value="false"/> <mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/> <mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/> -<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/> <mapEntry key="org.eclipse.pde.core/validation" value="false"/> +<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/> <mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/> <mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/> <mapEntry key="org.eclipse.core.runtime/debug" value="false"/> <mapEntry key="org.eclipse.equinox.preferences/set" value="false"/> <mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/> <mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/> -<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/> <mapEntry key="org.eclipse.emf.cdo/debug.protocol" value="true"/> +<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/> <mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/> <mapEntry key="org.eclipse.emf.cdo.protocol/perf.revision" value="true"/> <mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/> @@ -186,11 +186,11 @@ <mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/> <mapEntry key="org.eclipse.core.resources/restore" value="false"/> <mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/> -<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/> <mapEntry key="org.eclipse.net4j.buddies.server/debug" value="true"/> +<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/> <mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/> -<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/> <mapEntry key="org.eclipse.osgi/debug/loader" value="false"/> +<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/> <mapEntry key="org.eclipse.osgi/resolver/grouping" value="false"/> <mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/> <mapEntry key="org.eclipse.net4j/debug.acceptor" value="true"/> @@ -217,8 +217,8 @@ <mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/> <mapEntry key="org.eclipse.help/debug/context" value="false"/> <mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/> -<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/> <mapEntry key="org.eclipse.emf.cdo/debug" value="true"/> +<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/> <mapEntry key="org.eclipse.emf.cdo.ui/debug" value="true"/> <mapEntry key="org.eclipse.net4j.examples/debug" value="true"/> <mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/> @@ -230,12 +230,12 @@ <mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/> <mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/> <mapEntry key="org.eclipse.net4j.jms.server.jdbc/debug" value="true"/> -<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/> <mapEntry key="org.eclipse.core.resources/save" value="false"/> +<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/> <mapEntry key="org.eclipse.core.resources/contenttype" value="false"/> <mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/> -<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/> <mapEntry key="org.eclipse.emf.cdo.server/debug" value="true"/> +<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/> <mapEntry key="org.eclipse.osgi/debug/events" value="false"/> <mapEntry key="org.eclipse.ui/trace/commands" value="false"/> <mapEntry key="org.eclipse.equinox.preferences/get" value="false"/> @@ -249,49 +249,49 @@ <mapEntry key="org.eclipse.equinox.registry/debug" value="false"/> <mapEntry key="org.eclipse.ui.intro/debug" value="true"/> <mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/> -<mapEntry key="org.eclipse.net4j.jms/debug" value="true"/> <mapEntry key="org.eclipse.emf.cdo.protocol/perf.revision.reading" value="true"/> +<mapEntry key="org.eclipse.net4j.jms/debug" value="true"/> <mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/> <mapEntry key="org.eclipse.emf.cdo.server/debug.resource" value="true"/> -<mapEntry key="org.eclipse.net4j.debug/debug" value="true"/> <mapEntry key="org.eclipse.net4j.db.derby/debug.sql" value="true"/> +<mapEntry key="org.eclipse.net4j.debug/debug" value="true"/> <mapEntry key="org.eclipse.pde.core/cache" value="false"/> <mapEntry key="org.eclipse.emf.cdo/debug.transaction" value="true"/> <mapEntry key="org.eclipse.emf.cdo.server.db/debug" value="true"/> -<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/> <mapEntry key="org.eclipse.net4j/debug.selector" value="true"/> +<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/> <mapEntry key="org.eclipse.jdt.ui/debug" value="true"/> -<mapEntry key="org.eclipse.net4j.db/debug.sql" value="true"/> <mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/> +<mapEntry key="org.eclipse.net4j.db/debug.sql" value="true"/> <mapEntry key="org.eclipse.ui/perf/part.input" value="200"/> <mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/> <mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/> <mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/> <mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/> <mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/> -<mapEntry key="org.eclipse.net4j.fileshare.ui/debug" value="true"/> <mapEntry key="org.eclipse.net4j.util/debug.concurrency" value="true"/> +<mapEntry key="org.eclipse.net4j.fileshare.ui/debug" value="true"/> <mapEntry key="org.eclipse.core.resources/save/tree" value="false"/> <mapEntry key="org.eclipse.ui/debug/contributions" value="false"/> <mapEntry key="org.eclipse.update.core/debug/warning" value="false"/> <mapEntry key="org.eclipse.core.resources/natures" value="false"/> <mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/> <mapEntry key="org.eclipse.net4j.jms.admin/debug" value="true"/> -<mapEntry key="org.eclipse.net4j.db.derby/debug" value="true"/> <mapEntry key="org.eclipse.emf.cdo/debug.model" value="true"/> +<mapEntry key="org.eclipse.net4j.db.derby/debug" value="true"/> <mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/> -<mapEntry key="org.eclipse.help/debug/search" value="false"/> <mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/> +<mapEntry key="org.eclipse.help/debug/search" value="false"/> <mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/> -<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/> <mapEntry key="org.eclipse.ui/perf/part.create" value="800"/> +<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/> <mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/> <mapEntry key="org.eclipse.team.core/streams" value="false"/> <mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/> -<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/> <mapEntry key="org.eclipse.net4j.ui/debug" value="true"/> -<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/> +<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/> <mapEntry key="org.eclipse.emf.cdo.protocol/perf.revision.writing" value="true"/> +<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/> <mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/> <mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/> <mapEntry key="org.eclipse.emf.cdo/debug.session" value="true"/> @@ -308,16 +308,16 @@ <mapEntry key="org.eclipse.net4j.chat/debug" value="true"/> <mapEntry key="org.eclipse.ui.workbench/debug" value="false"/> <mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/> -<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/> <mapEntry key="org.eclipse.emf.cdo.protocol/debug.model" value="true"/> +<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/> <mapEntry key="org.eclipse.debug.core/debug" value="false"/> <mapEntry key="org.eclipse.core.resources/debug" value="false"/> <mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/> -<mapEntry key="org.eclipse.ui.browser/debug" value="false"/> <mapEntry key="org.eclipse.emf.cdo.server/debug.protocol" value="true"/> +<mapEntry key="org.eclipse.ui.browser/debug" value="false"/> <mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/> -<mapEntry key="org.eclipse.net4j.jms.server/debug.protocol" value="true"/> <mapEntry key="org.eclipse.update.core/debug/web" value="false"/> +<mapEntry key="org.eclipse.net4j.jms.server/debug.protocol" value="true"/> <mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/> <mapEntry key="org.eclipse.help/debug" value="true"/> <mapEntry key="org.eclipse.core.runtime/perf" value="false"/> @@ -329,10 +329,10 @@ <mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/> <mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/> <mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/> -<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/> <mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/> -<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/> +<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/> <mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/> +<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/> <mapEntry key="org.eclipse.emf.cdo.protocol/debug" value="true"/> <mapEntry key="org.eclipse.emf.cdo/debug.resource" value="true"/> <mapEntry key="org.eclipse.emf.cdo.protocol/perf" value="true"/> @@ -351,8 +351,8 @@ <mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/> <mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/> <mapEntry key="org.eclipse.update.configurator/debug" value="false"/> -<mapEntry key="org.eclipse.help.ui/debug" value="true"/> <mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/> +<mapEntry key="org.eclipse.help.ui/debug" value="true"/> <mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/> <mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/> </mapAttribute> diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java index 350b7ec474..465176eaf9 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java @@ -233,7 +233,13 @@ public class Repository extends Container<IRepositoryElement> implements IReposi protected TypeManager createTypeManager() { - return new TypeManager(this); + return new TypeManager(this) + { + @Override + protected String getThreadName() { + return "TypeManager-" + name; + } + }; } protected PackageManager createPackageManager() diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO2 TDD.launch b/plugins/org.eclipse.emf.cdo.tests/CDO2 TDD.launch index 22ab062c6c..d7e8b31981 100644 --- a/plugins/org.eclipse.emf.cdo.tests/CDO2 TDD.launch +++ b/plugins/org.eclipse.emf.cdo.tests/CDO2 TDD.launch @@ -11,5 +11,5 @@ <stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <sourceLookupDirector> <sourceContainers duplicates="false"> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;folder nest=&quot;false&quot; path=&quot;/org.eclipse.emf.cdo.weaver.ajdt/ecore&quot;/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.folder"/> <container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;default/&gt;&#13;&#10;" typeId="org.eclipse.debug.core.containerType.default"/> </sourceContainers> </sourceLookupDirector> "/> <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.TDD"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/> -<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddebug=true"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddebug=true -Xms256m -Xmx1024m"/> </launchConfiguration> diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java index 21ad8744ce..97267dc504 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java @@ -31,7 +31,7 @@ public class AllTests suite.addTestSuite(CrossReferenceTest.class); suite.addTestSuite(ChunkingTest.class); suite.addTestSuite(ChunkingWithMEMTest.class); - suite.addTestSuite(RandomDeadLockTest.class); + // TODO suite.addTestSuite(RandomDeadLockTest.class); suite.addTestSuite(PackageRegistryTest.class); suite.addTestSuite(RevisionDeltaTest.class); // TODO suite.addTestSuite(GeneratedEcoreTest.class); diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RandomDeadLockTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RandomDeadLockTest.java index c4d16fb4f6..b9572a750e 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RandomDeadLockTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RandomDeadLockTest.java @@ -13,16 +13,30 @@ package org.eclipse.emf.cdo.tests; import org.eclipse.emf.cdo.CDOSession; import org.eclipse.emf.cdo.CDOTransaction; +import org.eclipse.emf.cdo.eresource.CDOResource; +import org.eclipse.emf.cdo.tests.model1.Category; +import org.eclipse.emf.cdo.tests.model1.Model1Factory; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.net4j.util.om.OMPlatform; /** * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=201366 + * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=213782 * @author Simon McDuff */ public class RandomDeadLockTest extends AbstractCDOTest { - public void testCreateManySession() throws Exception + @Override + protected void doSetUp() throws Exception + { + super.doSetUp(); + OMPlatform.INSTANCE.setDebugging(false); + } + + public void _testCreateManySession() throws Exception { { + msg("Opening session"); CDOSession session = openModel1Session(); CDOTransaction transaction = session.openTransaction(); transaction.createResource("/test2"); @@ -31,14 +45,40 @@ public class RandomDeadLockTest extends AbstractCDOTest session.close(); } - for (int i = 0; i < 10; i++) + for (int i = 0; i < 100; i++) { + msg("Loop " + i); CDOSession session = openModel1Session(); CDOTransaction transaction = session.openTransaction(); - transaction.getResource("/test2"); + CDOResource resource = transaction.getResource("/test2"); + Category category = Model1Factory.eINSTANCE.createCategory(); + resource.getContents().add(category); transaction.commit(); transaction.close(); session.close(); } } + + public void testCreateManyTransaction() throws Exception + { + msg("Opening session"); + CDOSession session = openModel1Session(); + CDOTransaction transaction = session.openTransaction(new ResourceSetImpl()); + transaction.createResource("/test2"); + transaction.commit(); + transaction.close(); + + for (int i =0; i < 1000; i++) + { + msg("Loop " + i); + transaction = session.openTransaction(new ResourceSetImpl()); + CDOResource resource = transaction.getResource("/test2"); + Category category = Model1Factory.eINSTANCE.createCategory(); + resource.getContents().add(category); + transaction.commit(); + transaction.close(); + } + + session.close(); + } } diff --git a/plugins/org.eclipse.net4j.tcp/.options b/plugins/org.eclipse.net4j.tcp/.options index b985a44cd4..6a621c5208 100644 --- a/plugins/org.eclipse.net4j.tcp/.options +++ b/plugins/org.eclipse.net4j.tcp/.options @@ -1,3 +1,5 @@ # Debugging and tracing options org.eclipse.net4j.tcp/debug = true + +org.eclipse.net4j.tcp/protocol.registration.timeout = 5000 diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/ControlChannel.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/ControlChannel.java index 86c5c93543..8e2a74189e 100644 --- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/ControlChannel.java +++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/ControlChannel.java @@ -31,10 +31,10 @@ import java.nio.ByteBuffer; */ public final class ControlChannel extends Channel { + public static final long REGISTRATION_TIMEOUT = OM.PROTOCOL_REGISTRATION_TIMEOUT; + public static final short CONTROL_CHANNEL_INDEX = -1; - public static final long REGISTRATION_TIMEOUT = 5000; - public static final byte OPCODE_NEGOTIATION = 1; public static final byte OPCODE_REGISTRATION = 2; diff --git a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/bundle/OM.java b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/bundle/OM.java index 135f54bd8d..bcbcfc4596 100644 --- a/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/bundle/OM.java +++ b/plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/bundle/OM.java @@ -27,6 +27,8 @@ public abstract class OM public static final OMTracer DEBUG = BUNDLE.tracer("debug"); //$NON-NLS-1$ + public static final int PROTOCOL_REGISTRATION_TIMEOUT = BUNDLE.getDebugOption("protocol.registration.timeout", 5000); //$NON-NLS-1$ + public static final OMLogger LOG = BUNDLE.logger(); /** diff --git a/plugins/org.eclipse.net4j/.options b/plugins/org.eclipse.net4j/.options index fd7f175dda..9d659517f5 100644 --- a/plugins/org.eclipse.net4j/.options +++ b/plugins/org.eclipse.net4j/.options @@ -1,14 +1,12 @@ # Debugging and tracing options org.eclipse.net4j/debug = true - org.eclipse.net4j/debug.buffer = true org.eclipse.net4j/debug.buffer.stream = false org.eclipse.net4j/debug.channel = true org.eclipse.net4j/debug.selector = true org.eclipse.net4j/debug.acceptor = true org.eclipse.net4j/debug.connector = true - org.eclipse.net4j/debug.signal = true -org.eclipse.net4j/perf = false +org.eclipse.net4j/set.signal.thread.name = false diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/Channel.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/Channel.java index e19c010905..afe7ccfca9 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/Channel.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/Channel.java @@ -228,7 +228,14 @@ public class Channel extends Lifecycle implements IChannel, IBufferProvider // receiveSerializer = new CompletionWorkSerializer(); // receiveSerializer = new AsynchronousWorkSerializer(receiveExecutor); // receiveSerializer = new SynchronousWorkSerializer(); - receiveSerializer = new QueueWorkerWorkSerializer(); + receiveSerializer = new QueueWorkerWorkSerializer() + { + @Override + protected String getThreadName() + { + return "ReceiveSerializer-"+connector.getLocation() + channelIndex; + } + }; } } diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/OM.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/OM.java index ef26ae6b2b..7fa2dd00ff 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/OM.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/OM.java @@ -40,7 +40,9 @@ public abstract class OM public static final OMTracer DEBUG_CONNECTOR = DEBUG.tracer("connector"); //$NON-NLS-1$ public static final OMTracer DEBUG_SIGNAL = DEBUG.tracer("signal"); //$NON-NLS-1$ - + + public static final boolean SET_SIGNAL_THREAD_NAME = BUNDLE.getDebugOption("set.signal.thread.name", false); //$NON-NLS-1$ + public static final OMLogger LOG = BUNDLE.logger(); /** diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/Signal.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/Signal.java index 49df80a55c..15600fb06b 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/Signal.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/Signal.java @@ -112,14 +112,28 @@ public abstract class Signal implements Runnable public final void run() { + String threadName=null; try { + if (OM.SET_SIGNAL_THREAD_NAME) + { + threadName = getClass().getSimpleName(); + Thread.currentThread().setName(threadName); + } + runSync(); } catch (Exception ex) { OM.LOG.error(ex); } + finally + { + if (threadName!=null) + { + Thread.currentThread().setName(threadName+"(FINISHED)"); + } + } } protected void runSync() throws Exception diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java index 0c9294898a..22d2243ed2 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java @@ -79,7 +79,7 @@ public abstract class SignalProtocol extends Protocol public ExecutorService getExecutorService() { - return getChannel().getConnector().getReceiveExecutor(); + return getChannel().getReceiveExecutor(); } public boolean waitForSignals(long timeout) @@ -148,40 +148,43 @@ public abstract class SignalProtocol extends Protocol } Signal signal; - if (correlationID > 0) - { - // Incoming indication - signal = signals.get(-correlationID); - if (signal == null) - { - short signalID = byteBuffer.getShort(); - if (TRACER.isEnabled()) - { - TRACER.trace("Got signal id " + signalID); //$NON-NLS-1$ - } - - signal = createSignalReactor(signalID); - signal.setProtocol(this); - signal.setCorrelationID(-correlationID); - signal.setBufferInputStream(new SignalInputStream(getInputStreamTimeout())); - signal.setBufferOutputStream(new SignalOutputStream(-correlationID, signalID, false)); - signals.put(-correlationID, signal); - getExecutorService().execute(signal); - } - } - else + synchronized (signals) { - // Incoming confirmation - signal = signals.get(-correlationID); - if (signal == null) - { - if (TRACER.isEnabled()) - { - TRACER.trace("Discarding buffer"); //$NON-NLS-1$ - } - - buffer.release(); - } + if (correlationID > 0) + { + // Incoming indication + signal = signals.get(-correlationID); + if (signal == null) + { + short signalID = byteBuffer.getShort(); + if (TRACER.isEnabled()) + { + TRACER.trace("Got signal id " + signalID); //$NON-NLS-1$ + } + + signal = createSignalReactor(signalID); + signal.setProtocol(this); + signal.setCorrelationID(-correlationID); + signal.setBufferInputStream(new SignalInputStream(getInputStreamTimeout())); + signal.setBufferOutputStream(new SignalOutputStream(-correlationID, signalID, false)); + signals.put(-correlationID, signal); + getExecutorService().execute(signal); + } + } + else + { + // Incoming confirmation + signal = signals.get(-correlationID); + if (signal == null) + { + if (TRACER.isEnabled()) + { + TRACER.trace("Discarding buffer"); //$NON-NLS-1$ + } + + buffer.release(); + } + } } if (signal != null) // Can be null after timeout @@ -227,22 +230,25 @@ public abstract class SignalProtocol extends Protocol int correlationID = signalActor.getCorrelationID(); signalActor.setBufferInputStream(new SignalInputStream(timeout)); signalActor.setBufferOutputStream(new SignalOutputStream(correlationID, signalID, true)); - signals.put(correlationID, signalActor); + synchronized (signals) + { + signals.put(correlationID, signalActor); + } + signalActor.runSync(); } void stopSignal(Signal signal) { int correlationID = signal.getCorrelationID(); - signals.remove(correlationID); - synchronized (signals) { + signals.remove(correlationID); signals.notifyAll(); } } - int getNextCorrelationID() + synchronized int getNextCorrelationID() { int correlationID = nextCorrelationID; if (nextCorrelationID == MAX_CORRELATION_ID) |