diff options
Diffstat (limited to 'java/src/Freeze/ConnectionI.java')
-rw-r--r-- | java/src/Freeze/ConnectionI.java | 119 |
1 files changed, 47 insertions, 72 deletions
diff --git a/java/src/Freeze/ConnectionI.java b/java/src/Freeze/ConnectionI.java index 9b403b345bb..94fd8cfb656 100644 --- a/java/src/Freeze/ConnectionI.java +++ b/java/src/Freeze/ConnectionI.java @@ -9,9 +9,8 @@ package Freeze; -class ConnectionI implements Connection +public class ConnectionI implements Connection { - public Transaction beginTransaction() { @@ -37,7 +36,7 @@ class ConnectionI implements Connection { throw new DatabaseException("Closed connection"); } - + try { _dbEnv.getEnv().removeDatabase(dbTxn(), mapName + "." + indexName, null); @@ -60,42 +59,11 @@ class ConnectionI implements Connection } } - public void close() { - close(false); - } - - public Ice.Communicator - getCommunicator() - { - return _communicator; - } - - public String - getName() - { - return _envName; - } - - protected void - finalize() - { - close(true); - } - - void - close(boolean finalizing) - { if(_transaction != null) { - if(finalizing) - { - _communicator.getLogger().warning - ("Finalizing Connection on DbEnv \"" + _envName + "\" with active transaction"); - } - try { _transaction.rollback(); @@ -108,16 +76,11 @@ class ConnectionI implements Connection } } - - synchronized(this) + java.util.Iterator<Map> p = _mapList.iterator(); + while(p.hasNext()) { - java.util.Iterator p = _mapList.iterator(); - while(p.hasNext()) - { - ((Map) p.next()).close(finalizing); - } + p.next().close(); } - if(_dbEnv != null) { @@ -132,17 +95,40 @@ class ConnectionI implements Connection } } + public Ice.Communicator + getCommunicator() + { + return _communicator; + } + + public String + getName() + { + return _envName; + } + + protected void + finalize() + throws Throwable + { + if(_dbEnv != null) + { + _logger.warning("leaked Connection for DbEnv \"" + _envName + "\""); + } + super.finalize(); + } + ConnectionI(SharedDbEnv dbEnv) { _dbEnv = dbEnv; _communicator = dbEnv.getCommunicator(); + _logger = _communicator.getLogger(); _envName = dbEnv.getEnvName(); _trace = _communicator.getProperties().getPropertyAsInt("Freeze.Trace.Map"); _txTrace = _communicator.getProperties().getPropertyAsInt("Freeze.Trace.Transaction"); - + Ice.Properties properties = _communicator.getProperties(); _deadlockWarning = properties.getPropertyAsInt("Freeze.Warn.Deadlocks") > 0; - _closeInFinalizeWarning = properties.getPropertyAsIntWithDefault("Freeze.Warn.CloseInFinalize", 1) > 0; } ConnectionI(Ice.Communicator communicator, String envName, com.sleepycat.db.Environment dbEnv) @@ -150,31 +136,26 @@ class ConnectionI implements Connection this(SharedDbEnv.get(communicator, envName, dbEnv)); } - - // - // The synchronization is only needed only during finalization - // - - synchronized void + public void closeAllIterators() { - java.util.Iterator p = _mapList.iterator(); + java.util.Iterator<Map> p = _mapList.iterator(); while(p.hasNext()) { - ((Map) p.next()).closeAllIterators(); + p.next().closeAllIterators(); } } - synchronized java.util.Iterator + public java.util.Iterator registerMap(Map map) { _mapList.addFirst(map); - java.util.Iterator p = _mapList.iterator(); + java.util.Iterator<Map> p = _mapList.iterator(); p.next(); return p; } - synchronized void + public void unregisterMap(java.util.Iterator p) { p.remove(); @@ -186,7 +167,7 @@ class ConnectionI implements Connection _transaction = null; } - com.sleepycat.db.Transaction + public com.sleepycat.db.Transaction dbTxn() { if(_transaction == null) @@ -199,61 +180,55 @@ class ConnectionI implements Connection } } - SharedDbEnv + public SharedDbEnv dbEnv() { return _dbEnv; } - String + public String envName() { return _envName; } - Ice.Communicator + public Ice.Communicator communicator() { return _communicator; } - final int + public final int trace() { return _trace; } - final int + public final int txTrace() { return _txTrace; } - final boolean + public final boolean deadlockWarning() { return _deadlockWarning; } - final boolean - closeInFinalizeWarning() - { - return _closeInFinalizeWarning; - } - - private String errorPrefix() + private String + errorPrefix() { return "DbEnv(\"" + _envName + "\"): "; } - private Ice.Communicator _communicator; + private Ice.Logger _logger; private SharedDbEnv _dbEnv; private String _envName; private TransactionI _transaction; - private LinkedList _mapList = new Freeze.LinkedList(); + private LinkedList<Map> _mapList = new LinkedList<Map>(); private int _trace; private int _txTrace; private boolean _deadlockWarning; - private boolean _closeInFinalizeWarning; } |