diff options
author | Benoit Foucher <benoit@zeroc.com> | 2014-08-01 15:46:23 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2014-08-01 15:46:23 +0200 |
commit | d63daa520a5fc99cf7acbae17767bc0776d6ba5b (patch) | |
tree | 558969644df7f03c96ebdcf2effc83a1145061bb /java/src | |
parent | Fixed GCObject code-style issues (diff) | |
download | ice-d63daa520a5fc99cf7acbae17767bc0776d6ba5b.tar.bz2 ice-d63daa520a5fc99cf7acbae17767bc0776d6ba5b.tar.xz ice-d63daa520a5fc99cf7acbae17767bc0776d6ba5b.zip |
Fixed leak when observer updater is installed, code-style issues
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/IceInternal/CommunicatorObserverI.java | 36 | ||||
-rw-r--r-- | java/src/IceInternal/Instance.java | 5 | ||||
-rw-r--r-- | java/src/IceInternal/Selector.java | 1 |
3 files changed, 27 insertions, 15 deletions
diff --git a/java/src/IceInternal/CommunicatorObserverI.java b/java/src/IceInternal/CommunicatorObserverI.java index d0451465955..fb0b4e8ac62 100644 --- a/java/src/IceInternal/CommunicatorObserverI.java +++ b/java/src/IceInternal/CommunicatorObserverI.java @@ -769,20 +769,28 @@ public class CommunicatorObserverI implements Ice.Instrumentation.CommunicatorOb public void setObserverUpdater(final Ice.Instrumentation.ObserverUpdater updater) { - _connections.setUpdater(new Runnable() { - public void - run() - { - updater.updateConnectionObservers(); - } - }); - _threads.setUpdater(new Runnable() { - public void - run() - { - updater.updateThreadObservers(); - } - }); + if(updater == null) + { + _connections.setUpdater(null); + _threads.setUpdater(null); + } + else + { + _connections.setUpdater(new Runnable() { + public void + run() + { + updater.updateConnectionObservers(); + } + }); + _threads.setUpdater(new Runnable() { + public void + run() + { + updater.updateThreadObservers(); + } + }); + } if(_delegate != null) { diff --git a/java/src/IceInternal/Instance.java b/java/src/IceInternal/Instance.java index 824ac9c4ba4..95f8d33481e 100644 --- a/java/src/IceInternal/Instance.java +++ b/java/src/IceInternal/Instance.java @@ -1037,6 +1037,11 @@ public final class Instance _retryQueue.destroy(); } + if(_observer != null) + { + _observer.setObserverUpdater(null); + } + ThreadPool serverThreadPool = null; ThreadPool clientThreadPool = null; EndpointHostResolver endpointHostResolver = null; diff --git a/java/src/IceInternal/Selector.java b/java/src/IceInternal/Selector.java index b23fbacb1b1..55c7582fbf5 100644 --- a/java/src/IceInternal/Selector.java +++ b/java/src/IceInternal/Selector.java @@ -343,7 +343,6 @@ public final class Selector private java.util.Set<java.nio.channels.SelectionKey> _keys; private java.util.HashSet<EventHandler> _changes = new java.util.HashSet<EventHandler>(); - private java.util.HashSet<EventHandler> _pendingHandlers = new java.util.HashSet<EventHandler>(); private boolean _selecting; private boolean _interrupted; private int _spuriousWakeUp; |