diff options
author | Eike Stepper | 2013-06-11 10:54:29 +0000 |
---|---|---|
committer | Eike Stepper | 2013-06-11 10:54:29 +0000 |
commit | 253edab67bb3efacc2794b77c44d0c749d1caeee (patch) | |
tree | 140461945a7177f9d55915232aaf7de3777875c0 /plugins | |
parent | 50a804b7fe45dbed1d7b7ead2e33597631c731bb (diff) | |
download | cdo-253edab67bb3efacc2794b77c44d0c749d1caeee.tar.gz cdo-253edab67bb3efacc2794b77c44d0c749d1caeee.tar.xz cdo-253edab67bb3efacc2794b77c44d0c749d1caeee.zip |
[410446] FailOverMonitor might not deactivate properly
https://bugs.eclipse.org/bugs/show_bug.cgi?id=410446
Diffstat (limited to 'plugins')
3 files changed, 33 insertions, 13 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.java index bf8cd1e44c..2cc6591c75 100644 --- a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.java +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/net4j/FailoverMonitor.java @@ -336,8 +336,17 @@ public class FailoverMonitor extends Container<AgentProtocol> @Override protected void doDeactivate() throws Exception { - failoverMonitor.deregisterAgent(this); - super.doDeactivate(); + try + { + if (failoverMonitor != null) + { + failoverMonitor.deregisterAgent(this); + } + } + finally + { + super.doDeactivate(); + } } /** 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 e76e6da6cb..9a3da8dd5f 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 @@ -290,19 +290,24 @@ public class SignalProtocol<INFRA_STRUCTURE> extends Protocol<INFRA_STRUCTURE> i @Override protected void doDeactivate() throws Exception { - synchronized (signals) + try { - signals.clear(); - } + synchronized (signals) + { + signals.clear(); + } - IChannel channel = getChannel(); - if (channel != null) + IChannel channel = getChannel(); + if (channel != null) + { + channel.close(); + setChannel(null); + } + } + finally { - channel.close(); - setChannel(null); + super.doDeactivate(); } - - super.doDeactivate(); } @Override diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/heartbeat/HeartBeatProtocol.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/heartbeat/HeartBeatProtocol.java index 70856f9921..e0b79d4e7f 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/heartbeat/HeartBeatProtocol.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/heartbeat/HeartBeatProtocol.java @@ -258,8 +258,14 @@ public class HeartBeatProtocol extends SignalProtocol<Object> @Override protected void doDeactivate() throws Exception { - cancelHeartBeatTask(); - super.doDeactivate(); + try + { + cancelHeartBeatTask(); + } + finally + { + super.doDeactivate(); + } } /** |