diff options
Diffstat (limited to 'java')
-rw-r--r-- | java/src/Ice/src/main/java/com/zeroc/IceInternal/FactoryACMMonitor.java | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/java/src/Ice/src/main/java/com/zeroc/IceInternal/FactoryACMMonitor.java b/java/src/Ice/src/main/java/com/zeroc/IceInternal/FactoryACMMonitor.java index 46bf10b1733..c5ca7874b05 100644 --- a/java/src/Ice/src/main/java/com/zeroc/IceInternal/FactoryACMMonitor.java +++ b/java/src/Ice/src/main/java/com/zeroc/IceInternal/FactoryACMMonitor.java @@ -55,6 +55,20 @@ class FactoryACMMonitor implements ACMMonitor { if(_instance == null) { + // + // Ensure all the connections have been cleared, it's important to wait here + // to prevent the timer destruction in IceInternal::Instance::destroy. + // + while(!_connections.isEmpty()) + { + try + { + wait(); + } + catch(InterruptedException ex) + { + } + } return; } @@ -194,7 +208,7 @@ class FactoryACMMonitor implements ACMMonitor if(_instance == null) { _connections.clear(); - notify(); + notifyAll(); return; } |