summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2012-01-03 22:35:03 +0100
committerJose <jose@zeroc.com>2012-01-03 22:35:03 +0100
commitf508d7d7cf7811062c5466efa2b3bf7f921947d8 (patch)
treeadcee43513be1f8a3a76db89857d6aa73a664842 /java/src
parentICE-4744 Eclipse plugin: build failure when slice2java generates warning (diff)
downloadice-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.java15
-rw-r--r--java/src/Freeze/MapInternal/IteratorI.java23
-rw-r--r--java/src/Ice/ConnectionI.java24
-rw-r--r--java/src/Ice/LoggerI.java15
-rw-r--r--java/src/Ice/ObjectAdapterI.java34
-rw-r--r--java/src/IceInternal/ConnectionMonitor.java16
-rw-r--r--java/src/IceInternal/IncomingConnectionFactory.java16
-rw-r--r--java/src/IceInternal/Instance.java44
-rw-r--r--java/src/IceInternal/ObjectAdapterFactory.java18
-rw-r--r--java/src/IceInternal/OutgoingConnectionFactory.java22
-rw-r--r--java/src/IceInternal/TcpAcceptor.java14
-rw-r--r--java/src/IceInternal/TcpTransceiver.java14
-rw-r--r--java/src/IceInternal/ThreadPool.java12
-rw-r--r--java/src/IceInternal/ThreadPoolWorkQueue.java12
-rw-r--r--java/src/IceInternal/Timer.java14
-rw-r--r--java/src/IceInternal/UdpTransceiver.java14
-rw-r--r--java/src/IceSSL/AcceptorI.java14
-rw-r--r--java/src/IceSSL/TransceiverI.java14
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