diff options
author | Eike Stepper | 2009-01-03 16:54:43 +0000 |
---|---|---|
committer | Eike Stepper | 2009-01-03 16:54:43 +0000 |
commit | 131eae45a63d2dbb7620b0988fa65b6d26f73f29 (patch) | |
tree | 8904c4750a1c38e04caf602752995fcd8098edb3 /plugins | |
parent | ec2f6d75ce4a7f46952868063d0afe2ab8877712 (diff) | |
download | cdo-131eae45a63d2dbb7620b0988fa65b6d26f73f29.tar.gz cdo-131eae45a63d2dbb7620b0988fa65b6d26f73f29.tar.xz cdo-131eae45a63d2dbb7620b0988fa65b6d26f73f29.zip |
[258739] Possible deadlocks in Lifecycle.java
https://bugs.eclipse.org/bugs/show_bug.cgi?id=258739
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Channel.java | 4 | ||||
-rw-r--r-- | plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/ChannelMultiplexer.java | 16 |
2 files changed, 13 insertions, 7 deletions
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Channel.java b/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Channel.java index 2fa4a2a490..49f7e6d2bc 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Channel.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Channel.java @@ -172,7 +172,7 @@ public class Channel extends Lifecycle implements InternalChannel TRACER.format("Handling buffer from multiplexer: {0} --> {1}", buffer, this); //$NON-NLS-1$ } - receiveSerializer.addWork(craeteReceiverWork(buffer)); + receiveSerializer.addWork(createReceiverWork(buffer)); } else { @@ -181,7 +181,7 @@ public class Channel extends Lifecycle implements InternalChannel } } - protected ReceiverWork craeteReceiverWork(IBuffer buffer) + protected ReceiverWork createReceiverWork(IBuffer buffer) { return new ReceiverWork(this, buffer); } diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/ChannelMultiplexer.java b/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/ChannelMultiplexer.java index e2e5c0d3e7..456e5d44c6 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/ChannelMultiplexer.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/ChannelMultiplexer.java @@ -278,14 +278,20 @@ public abstract class ChannelMultiplexer extends Container<IChannel> implements @Override protected void doDeactivate() throws Exception { + IChannel[] channels; synchronized (channelIDs) { - for (IChannel channel : getChannels()) - { - LifecycleUtil.deactivate(channel); - } + channels = getElements(); + } + + for (IChannel channel : channels) + { + LifecycleUtil.deactivate(channel); + } - channels.clear(); + synchronized (channelIDs) + { + this.channels.clear(); } super.doDeactivate(); |