summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2014-08-01 15:46:23 +0200
committerBenoit Foucher <benoit@zeroc.com>2014-08-01 15:46:23 +0200
commitd63daa520a5fc99cf7acbae17767bc0776d6ba5b (patch)
tree558969644df7f03c96ebdcf2effc83a1145061bb /java/src
parentFixed GCObject code-style issues (diff)
downloadice-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.java36
-rw-r--r--java/src/IceInternal/Instance.java5
-rw-r--r--java/src/IceInternal/Selector.java1
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;