summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2007-12-28 06:12:57 (EST)
committerEike Stepper2007-12-28 06:12:57 (EST)
commit112ad476351b364a1f2d20d9943b3a0c6ea95e75 (patch)
treed6e201b7a8b5882724189abc7fab61dbdaacfc05
parent03b3e11cc2ecc63d162b0200b85f9fab6190c6d7 (diff)
downloadcdo-112ad476351b364a1f2d20d9943b3a0c6ea95e75.zip
cdo-112ad476351b364a1f2d20d9943b3a0c6ea95e75.tar.gz
cdo-112ad476351b364a1f2d20d9943b3a0c6ea95e75.tar.bz2
[213782] Transaction DeadLock
https://bugs.eclipse.org/bugs/show_bug.cgi?id=213782
-rw-r--r--plugins/org.eclipse.emf.cdo.server/CDOServer.launch84
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java8
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/CDO2 TDD.launch2
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RandomDeadLockTest.java46
-rw-r--r--plugins/org.eclipse.net4j.tcp/.options2
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/ControlChannel.java4
-rw-r--r--plugins/org.eclipse.net4j.tcp/src/org/eclipse/net4j/internal/tcp/bundle/OM.java2
-rw-r--r--plugins/org.eclipse.net4j/.options4
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/Channel.java9
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/bundle/OM.java4
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/Signal.java14
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java82
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 0aad895..4b4b804 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}&#13;&#10;-debug&#13;&#10;-console&#13;&#10;--launcher.XXMaxPermSize&#13;&#10;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&#13;&#10;-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 350b7ec..465176e 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 22ab062..d7e8b31 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="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;folder nest=&amp;quot;false&amp;quot; path=&amp;quot;/org.eclipse.emf.cdo.weaver.ajdt/ecore&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.folder&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>
<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&#13;&#10;-Xms256m&#13;&#10;-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 21ad874..97267dc 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 c4d16fb..b9572a7 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 b985a44..6a621c5 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 86c5c93..8e2a741 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 135f54b..bcbcfc4 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 fd7f175..9d65951 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 e19c010..afe7ccf 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 ef26ae6..7fa2dd0 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 49df80a..15600fb 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 0c92948..22d2243 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)