summaryrefslogtreecommitdiff
path: root/java-compat/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2017-06-15 09:13:51 +0200
committerBenoit Foucher <benoit@zeroc.com>2017-06-15 09:13:51 +0200
commit145cf69b7cdd21e96d44c5bc5690f23e2e9d12fe (patch)
tree52444d61f215b1c20c08b0dc6141a327aeebb4e5 /java-compat/src
parentmore BT test fixes (diff)
downloadice-145cf69b7cdd21e96d44c5bc5690f23e2e9d12fe.tar.bz2
ice-145cf69b7cdd21e96d44c5bc5690f23e2e9d12fe.tar.xz
ice-145cf69b7cdd21e96d44c5bc5690f23e2e9d12fe.zip
Fixed ICE-8056 - communicator waitForShutdown hang
Diffstat (limited to 'java-compat/src')
-rw-r--r--java-compat/src/Ice/src/main/java/IceInternal/FactoryACMMonitor.java16
1 files changed, 15 insertions, 1 deletions
diff --git a/java-compat/src/Ice/src/main/java/IceInternal/FactoryACMMonitor.java b/java-compat/src/Ice/src/main/java/IceInternal/FactoryACMMonitor.java
index 901491f966d..8d79db33f93 100644
--- a/java-compat/src/Ice/src/main/java/IceInternal/FactoryACMMonitor.java
+++ b/java-compat/src/Ice/src/main/java/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;
}
@@ -203,7 +217,7 @@ class FactoryACMMonitor implements ACMMonitor
if(_instance == null)
{
_connections.clear();
- notify();
+ notifyAll();
return;
}