diff options
author | Jose <jose@zeroc.com> | 2012-01-03 22:35:03 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2012-01-03 22:35:03 +0100 |
commit | f508d7d7cf7811062c5466efa2b3bf7f921947d8 (patch) | |
tree | adcee43513be1f8a3a76db89857d6aa73a664842 /java/src | |
parent | ICE-4744 Eclipse plugin: build failure when slice2java generates warning (diff) | |
download | ice-f508d7d7cf7811062c5466efa2b3bf7f921947d8.tar.bz2 ice-f508d7d7cf7811062c5466efa2b3bf7f921947d8.tar.xz ice-f508d7d7cf7811062c5466efa2b3bf7f921947d8.zip |
ICE-3318 Java finalizers are problematic
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/Freeze/ConnectionI.java | 15 | ||||
-rw-r--r-- | java/src/Freeze/MapInternal/IteratorI.java | 23 | ||||
-rw-r--r-- | java/src/Ice/ConnectionI.java | 24 | ||||
-rw-r--r-- | java/src/Ice/LoggerI.java | 15 | ||||
-rw-r--r-- | java/src/Ice/ObjectAdapterI.java | 34 | ||||
-rw-r--r-- | java/src/IceInternal/ConnectionMonitor.java | 16 | ||||
-rw-r--r-- | java/src/IceInternal/IncomingConnectionFactory.java | 16 | ||||
-rw-r--r-- | java/src/IceInternal/Instance.java | 44 | ||||
-rw-r--r-- | java/src/IceInternal/ObjectAdapterFactory.java | 18 | ||||
-rw-r--r-- | java/src/IceInternal/OutgoingConnectionFactory.java | 22 | ||||
-rw-r--r-- | java/src/IceInternal/TcpAcceptor.java | 14 | ||||
-rw-r--r-- | java/src/IceInternal/TcpTransceiver.java | 14 | ||||
-rw-r--r-- | java/src/IceInternal/ThreadPool.java | 12 | ||||
-rw-r--r-- | java/src/IceInternal/ThreadPoolWorkQueue.java | 12 | ||||
-rw-r--r-- | java/src/IceInternal/Timer.java | 14 | ||||
-rw-r--r-- | java/src/IceInternal/UdpTransceiver.java | 14 | ||||
-rw-r--r-- | java/src/IceSSL/AcceptorI.java | 14 | ||||
-rw-r--r-- | java/src/IceSSL/TransceiverI.java | 14 |
18 files changed, 231 insertions, 104 deletions
diff --git a/java/src/Freeze/ConnectionI.java b/java/src/Freeze/ConnectionI.java index 0cd6c26e6eb..5bb499461bd 100644 --- a/java/src/Freeze/ConnectionI.java +++ b/java/src/Freeze/ConnectionI.java @@ -107,11 +107,20 @@ public class ConnectionI implements Connection finalize() throws Throwable { - if(_dbEnv != null) + try + { + if(_dbEnv != null) + { + _logger.warning("leaked Connection for DbEnv \"" + _envName + "\""); + } + } + catch(java.lang.Exception ex) + { + } + finally { - _logger.warning("leaked Connection for DbEnv \"" + _envName + "\""); + super.finalize(); } - super.finalize(); } ConnectionI(SharedDbEnv dbEnv) diff --git a/java/src/Freeze/MapInternal/IteratorI.java b/java/src/Freeze/MapInternal/IteratorI.java index 5afbc8ed2c2..45b0b383cac 100644 --- a/java/src/Freeze/MapInternal/IteratorI.java +++ b/java/src/Freeze/MapInternal/IteratorI.java @@ -237,15 +237,24 @@ class IteratorI<K, V> implements Freeze.Map.EntryIterator<java.util.Map.Entry<K, finalize() throws Throwable { - if(_cursor != null) + try + { + if(_cursor != null) + { + _trace.logger.warning( + "iterator leaked for Map \"" + _dbName + "\"; the application " + + "should have closed it earlier by calling Map.EntryIterator.close(), " + + "Map.closeAllIterators(), Map.close(), Connection.close(), or (if also " + + "leaking a transaction) Transaction.commit() or Transaction.rollback()"); + } + } + catch(java.lang.Exception ex) + { + } + finally { - _trace.logger.warning( - "iterator leaked for Map \"" + _dbName + "\"; the application " + - "should have closed it earlier by calling Map.EntryIterator.close(), " + - "Map.closeAllIterators(), Map.close(), Connection.close(), or (if also " + - "leaking a transaction) Transaction.commit() or Transaction.rollback()"); + super.finalize(); } - super.finalize(); } void diff --git a/java/src/Ice/ConnectionI.java b/java/src/Ice/ConnectionI.java index e3ea5ccc308..dc44c81ad20 100644 --- a/java/src/Ice/ConnectionI.java +++ b/java/src/Ice/ConnectionI.java @@ -1571,14 +1571,22 @@ public final class ConnectionI extends IceInternal.EventHandler implements Conne finalize() throws Throwable { - IceUtilInternal.Assert.FinalizerAssert(_startCallback == null); - IceUtilInternal.Assert.FinalizerAssert(_state == StateFinished); - IceUtilInternal.Assert.FinalizerAssert(_dispatchCount == 0); - IceUtilInternal.Assert.FinalizerAssert(_sendStreams.isEmpty()); - IceUtilInternal.Assert.FinalizerAssert(_requests.isEmpty()); - IceUtilInternal.Assert.FinalizerAssert(_asyncRequests.isEmpty()); - - super.finalize(); + try + { + IceUtilInternal.Assert.FinalizerAssert(_startCallback == null); + IceUtilInternal.Assert.FinalizerAssert(_state == StateFinished); + IceUtilInternal.Assert.FinalizerAssert(_dispatchCount == 0); + IceUtilInternal.Assert.FinalizerAssert(_sendStreams.isEmpty()); + IceUtilInternal.Assert.FinalizerAssert(_requests.isEmpty()); + IceUtilInternal.Assert.FinalizerAssert(_asyncRequests.isEmpty()); + } + catch(java.lang.Exception ex) + { + } + finally + { + super.finalize(); + } } private static final int StateNotInitialized = 0; diff --git a/java/src/Ice/LoggerI.java b/java/src/Ice/LoggerI.java index b05a475e4d0..894c683b5cb 100644 --- a/java/src/Ice/LoggerI.java +++ b/java/src/Ice/LoggerI.java @@ -37,21 +37,6 @@ public class LoggerI implements Logger } } - protected void - finalize() - { - if(_out != null) - { - try - { - _out.close(); - } - catch(java.lang.Exception ex) - { - } - } - } - public void print(String message) { diff --git a/java/src/Ice/ObjectAdapterI.java b/java/src/Ice/ObjectAdapterI.java index e975fc71434..96a44c35dd9 100644 --- a/java/src/Ice/ObjectAdapterI.java +++ b/java/src/Ice/ObjectAdapterI.java @@ -1038,25 +1038,33 @@ public final class ObjectAdapterI implements ObjectAdapter finalize() throws Throwable { - if(!_deactivated) + try { - _instance.initializationData().logger.warning("object adapter `" + getName() + - "' has not been deactivated"); + if(!_deactivated) + { + _instance.initializationData().logger.warning("object adapter `" + getName() + + "' has not been deactivated"); + } + else if(!_destroyed) + { + _instance.initializationData().logger.warning("object adapter `" + getName() + "' has not been destroyed"); + } + else + { + IceUtilInternal.Assert.FinalizerAssert(_threadPool == null); + //IceUtilInternal.Assert.FinalizerAssert(_servantManager == null); // Not cleared, it needs to be immutable. + //IceUtilInternal.Assert.FinalizerAssert(_incomingConnectionFactories.isEmpty()); + IceUtilInternal.Assert.FinalizerAssert(_directCount == 0); + IceUtilInternal.Assert.FinalizerAssert(!_waitForActivate); + } } - else if(!_destroyed) + catch(java.lang.Exception ex) { - _instance.initializationData().logger.warning("object adapter `" + getName() + "' has not been destroyed"); } - else + finally { - IceUtilInternal.Assert.FinalizerAssert(_threadPool == null); - //IceUtilInternal.Assert.FinalizerAssert(_servantManager == null); // Not cleared, it needs to be immutable. - //IceUtilInternal.Assert.FinalizerAssert(_incomingConnectionFactories.isEmpty()); - IceUtilInternal.Assert.FinalizerAssert(_directCount == 0); - IceUtilInternal.Assert.FinalizerAssert(!_waitForActivate); + super.finalize(); } - - super.finalize(); } private ObjectPrx diff --git a/java/src/IceInternal/ConnectionMonitor.java b/java/src/IceInternal/ConnectionMonitor.java index 88423d574cf..ae6dc7f61fe 100644 --- a/java/src/IceInternal/ConnectionMonitor.java +++ b/java/src/IceInternal/ConnectionMonitor.java @@ -96,10 +96,18 @@ public final class ConnectionMonitor implements IceInternal.TimerTask finalize() throws Throwable { - IceUtilInternal.Assert.FinalizerAssert(_instance == null); - IceUtilInternal.Assert.FinalizerAssert(_connections == null); - - super.finalize(); + try + { + IceUtilInternal.Assert.FinalizerAssert(_instance == null); + IceUtilInternal.Assert.FinalizerAssert(_connections == null); + } + catch(java.lang.Exception ex) + { + } + finally + { + super.finalize(); + } } public void diff --git a/java/src/IceInternal/IncomingConnectionFactory.java b/java/src/IceInternal/IncomingConnectionFactory.java index f73c51068fb..b84e3343c68 100644 --- a/java/src/IceInternal/IncomingConnectionFactory.java +++ b/java/src/IceInternal/IncomingConnectionFactory.java @@ -418,10 +418,18 @@ public final class IncomingConnectionFactory extends EventHandler implements Ice finalize() throws Throwable { - IceUtilInternal.Assert.FinalizerAssert(_state == StateFinished); - IceUtilInternal.Assert.FinalizerAssert(_connections.isEmpty()); - - super.finalize(); + try + { + IceUtilInternal.Assert.FinalizerAssert(_state == StateFinished); + IceUtilInternal.Assert.FinalizerAssert(_connections.isEmpty()); + } + catch(java.lang.Exception ex) + { + } + finally + { + super.finalize(); + } } private static final int StateActive = 0; diff --git a/java/src/IceInternal/Instance.java b/java/src/IceInternal/Instance.java index b2163e9b844..912be9a7654 100644 --- a/java/src/IceInternal/Instance.java +++ b/java/src/IceInternal/Instance.java @@ -718,24 +718,32 @@ public final class Instance finalize() throws Throwable { - IceUtilInternal.Assert.FinalizerAssert(_state == StateDestroyed); - IceUtilInternal.Assert.FinalizerAssert(_referenceFactory == null); - IceUtilInternal.Assert.FinalizerAssert(_proxyFactory == null); - IceUtilInternal.Assert.FinalizerAssert(_outgoingConnectionFactory == null); - IceUtilInternal.Assert.FinalizerAssert(_connectionMonitor == null); - IceUtilInternal.Assert.FinalizerAssert(_servantFactoryManager == null); - IceUtilInternal.Assert.FinalizerAssert(_objectAdapterFactory == null); - IceUtilInternal.Assert.FinalizerAssert(_clientThreadPool == null); - IceUtilInternal.Assert.FinalizerAssert(_serverThreadPool == null); - IceUtilInternal.Assert.FinalizerAssert(_endpointHostResolver == null); - IceUtilInternal.Assert.FinalizerAssert(_timer == null); - IceUtilInternal.Assert.FinalizerAssert(_routerManager == null); - IceUtilInternal.Assert.FinalizerAssert(_locatorManager == null); - IceUtilInternal.Assert.FinalizerAssert(_endpointFactoryManager == null); - IceUtilInternal.Assert.FinalizerAssert(_pluginManager == null); - IceUtilInternal.Assert.FinalizerAssert(_retryQueue == null); - - super.finalize(); + try + { + IceUtilInternal.Assert.FinalizerAssert(_state == StateDestroyed); + IceUtilInternal.Assert.FinalizerAssert(_referenceFactory == null); + IceUtilInternal.Assert.FinalizerAssert(_proxyFactory == null); + IceUtilInternal.Assert.FinalizerAssert(_outgoingConnectionFactory == null); + IceUtilInternal.Assert.FinalizerAssert(_connectionMonitor == null); + IceUtilInternal.Assert.FinalizerAssert(_servantFactoryManager == null); + IceUtilInternal.Assert.FinalizerAssert(_objectAdapterFactory == null); + IceUtilInternal.Assert.FinalizerAssert(_clientThreadPool == null); + IceUtilInternal.Assert.FinalizerAssert(_serverThreadPool == null); + IceUtilInternal.Assert.FinalizerAssert(_endpointHostResolver == null); + IceUtilInternal.Assert.FinalizerAssert(_timer == null); + IceUtilInternal.Assert.FinalizerAssert(_routerManager == null); + IceUtilInternal.Assert.FinalizerAssert(_locatorManager == null); + IceUtilInternal.Assert.FinalizerAssert(_endpointFactoryManager == null); + IceUtilInternal.Assert.FinalizerAssert(_pluginManager == null); + IceUtilInternal.Assert.FinalizerAssert(_retryQueue == null); + } + catch(java.lang.Exception ex) + { + } + finally + { + super.finalize(); + } } public void diff --git a/java/src/IceInternal/ObjectAdapterFactory.java b/java/src/IceInternal/ObjectAdapterFactory.java index c9cb79a13ec..804c309328d 100644 --- a/java/src/IceInternal/ObjectAdapterFactory.java +++ b/java/src/IceInternal/ObjectAdapterFactory.java @@ -206,11 +206,19 @@ public final class ObjectAdapterFactory finalize() throws Throwable { - IceUtilInternal.Assert.FinalizerAssert(_instance == null); - IceUtilInternal.Assert.FinalizerAssert(_communicator == null); - //IceUtilInternal.Assert.FinalizerAssert(_adapters.isEmpty()) - - super.finalize(); + try + { + IceUtilInternal.Assert.FinalizerAssert(_instance == null); + IceUtilInternal.Assert.FinalizerAssert(_communicator == null); + IceUtilInternal.Assert.FinalizerAssert(_adapters.isEmpty()); + } + catch(java.lang.Exception ex) + { + } + finally + { + super.finalize(); + } } private Instance _instance; diff --git a/java/src/IceInternal/OutgoingConnectionFactory.java b/java/src/IceInternal/OutgoingConnectionFactory.java index 2036c084c04..d9aaaf7739d 100644 --- a/java/src/IceInternal/OutgoingConnectionFactory.java +++ b/java/src/IceInternal/OutgoingConnectionFactory.java @@ -425,13 +425,21 @@ public final class OutgoingConnectionFactory finalize() throws Throwable { - IceUtilInternal.Assert.FinalizerAssert(_destroyed); - //IceUtilInternal.Assert.FinalizerAssert(_connections.isEmpty()); - //IceUtilInternal.Assert.FinalizerAssert(_connectionsByEndpoint.isEmpty()); - IceUtilInternal.Assert.FinalizerAssert(_pendingConnectCount == 0); - IceUtilInternal.Assert.FinalizerAssert(_pending.isEmpty()); - - super.finalize(); + try + { + IceUtilInternal.Assert.FinalizerAssert(_destroyed); + IceUtilInternal.Assert.FinalizerAssert(_connections.isEmpty()); + IceUtilInternal.Assert.FinalizerAssert(_connectionsByEndpoint.isEmpty()); + IceUtilInternal.Assert.FinalizerAssert(_pendingConnectCount == 0); + IceUtilInternal.Assert.FinalizerAssert(_pending.isEmpty()); + } + catch(java.lang.Exception ex) + { + } + finally + { + super.finalize(); + } } private java.util.List<EndpointI> diff --git a/java/src/IceInternal/TcpAcceptor.java b/java/src/IceInternal/TcpAcceptor.java index 1833b4c10df..8eae724baff 100644 --- a/java/src/IceInternal/TcpAcceptor.java +++ b/java/src/IceInternal/TcpAcceptor.java @@ -129,9 +129,17 @@ class TcpAcceptor implements Acceptor finalize() throws Throwable { - IceUtilInternal.Assert.FinalizerAssert(_fd == null); - - super.finalize(); + try + { + IceUtilInternal.Assert.FinalizerAssert(_fd == null); + } + catch(java.lang.Exception ex) + { + } + finally + { + super.finalize(); + } } private Instance _instance; diff --git a/java/src/IceInternal/TcpTransceiver.java b/java/src/IceInternal/TcpTransceiver.java index 3a5e9c7f676..637b26025dd 100644 --- a/java/src/IceInternal/TcpTransceiver.java +++ b/java/src/IceInternal/TcpTransceiver.java @@ -286,9 +286,17 @@ final class TcpTransceiver implements Transceiver finalize() throws Throwable { - IceUtilInternal.Assert.FinalizerAssert(_fd == null); - - super.finalize(); + try + { + IceUtilInternal.Assert.FinalizerAssert(_fd == null); + } + catch(java.lang.Exception ex) + { + } + finally + { + super.finalize(); + } } private java.nio.channels.SocketChannel _fd; diff --git a/java/src/IceInternal/ThreadPool.java b/java/src/IceInternal/ThreadPool.java index 30cbf463e31..9818529bfa2 100644 --- a/java/src/IceInternal/ThreadPool.java +++ b/java/src/IceInternal/ThreadPool.java @@ -210,7 +210,17 @@ public final class ThreadPool finalize() throws Throwable { - IceUtilInternal.Assert.FinalizerAssert(_destroyed); + try + { + IceUtilInternal.Assert.FinalizerAssert(_destroyed); + } + catch(java.lang.Exception ex) + { + } + finally + { + super.finalize(); + } } public synchronized void diff --git a/java/src/IceInternal/ThreadPoolWorkQueue.java b/java/src/IceInternal/ThreadPoolWorkQueue.java index 76879e02ec2..87e609566b1 100644 --- a/java/src/IceInternal/ThreadPoolWorkQueue.java +++ b/java/src/IceInternal/ThreadPoolWorkQueue.java @@ -38,7 +38,17 @@ final class ThreadPoolWorkQueue extends EventHandler finalize() throws Throwable { - IceUtilInternal.Assert.FinalizerAssert(_destroyed); + try + { + IceUtilInternal.Assert.FinalizerAssert(_destroyed); + } + catch(java.lang.Exception ex) + { + } + finally + { + super.finalize(); + } } public synchronized void diff --git a/java/src/IceInternal/Timer.java b/java/src/IceInternal/Timer.java index a97486d92dc..957bcc14a71 100644 --- a/java/src/IceInternal/Timer.java +++ b/java/src/IceInternal/Timer.java @@ -132,9 +132,17 @@ public final class Timer extends Thread finalize() throws Throwable { - IceUtilInternal.Assert.FinalizerAssert(_instance == null); - - super.finalize(); + try + { + IceUtilInternal.Assert.FinalizerAssert(_instance == null); + } + catch(java.lang.Exception ex) + { + } + finally + { + super.finalize(); + } } public void diff --git a/java/src/IceInternal/UdpTransceiver.java b/java/src/IceInternal/UdpTransceiver.java index 4d960b25f75..5f0e104c6ce 100644 --- a/java/src/IceInternal/UdpTransceiver.java +++ b/java/src/IceInternal/UdpTransceiver.java @@ -615,9 +615,17 @@ final class UdpTransceiver implements Transceiver finalize() throws Throwable { - IceUtilInternal.Assert.FinalizerAssert(_fd == null); - - super.finalize(); + try + { + IceUtilInternal.Assert.FinalizerAssert(_fd == null); + } + catch(java.lang.Exception ex) + { + } + finally + { + super.finalize(); + } } private TraceLevels _traceLevels; diff --git a/java/src/IceSSL/AcceptorI.java b/java/src/IceSSL/AcceptorI.java index d2bd3ed4792..634b57d4aa8 100644 --- a/java/src/IceSSL/AcceptorI.java +++ b/java/src/IceSSL/AcceptorI.java @@ -152,9 +152,17 @@ final class AcceptorI implements IceInternal.Acceptor finalize() throws Throwable { - IceUtilInternal.Assert.FinalizerAssert(_fd == null); - - super.finalize(); + try + { + IceUtilInternal.Assert.FinalizerAssert(_fd == null); + } + catch(java.lang.Exception ex) + { + } + finally + { + super.finalize(); + } } private Instance _instance; diff --git a/java/src/IceSSL/TransceiverI.java b/java/src/IceSSL/TransceiverI.java index 60f7b925b57..3ca829747a5 100644 --- a/java/src/IceSSL/TransceiverI.java +++ b/java/src/IceSSL/TransceiverI.java @@ -351,9 +351,17 @@ final class TransceiverI implements IceInternal.Transceiver finalize() throws Throwable { - IceUtilInternal.Assert.FinalizerAssert(_fd == null); - - super.finalize(); + try + { + IceUtilInternal.Assert.FinalizerAssert(_fd == null); + } + catch(java.lang.Exception ex) + { + } + finally + { + super.finalize(); + } } private NativeConnectionInfo |