diff options
author | Bernard Normier <bernard@zeroc.com> | 2010-05-27 13:35:59 -0400 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2010-05-27 13:35:59 -0400 |
commit | 1ba56ce2d905543d1f98fbe7a1adfb79da7839b1 (patch) | |
tree | 618aac6ab46c980ac0d8e14e237e3c77854d8bc7 /java/src/Freeze/MapInternal/MapI.java | |
parent | more CHANGES fixes for 4515 (diff) | |
download | ice-1ba56ce2d905543d1f98fbe7a1adfb79da7839b1.tar.bz2 ice-1ba56ce2d905543d1f98fbe7a1adfb79da7839b1.tar.xz ice-1ba56ce2d905543d1f98fbe7a1adfb79da7839b1.zip |
Fixed bug #4697
Diffstat (limited to 'java/src/Freeze/MapInternal/MapI.java')
-rw-r--r-- | java/src/Freeze/MapInternal/MapI.java | 113 |
1 files changed, 60 insertions, 53 deletions
diff --git a/java/src/Freeze/MapInternal/MapI.java b/java/src/Freeze/MapInternal/MapI.java index b7afe4b136a..f0d1b4c9831 100644 --- a/java/src/Freeze/MapInternal/MapI.java +++ b/java/src/Freeze/MapInternal/MapI.java @@ -66,7 +66,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> if(trace.level >= 1) { - trace.logger.trace("Freeze.Map", "Recreating \"" + dbName + "\""); + trace.logger.trace("Freeze.MapInternal.MapI", "Recreating \"" + dbName + "\""); } Transaction tx = connection.currentTransaction(); @@ -92,7 +92,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> if(trace.level >= 2) { - trace.logger.trace("Freeze.Map", "Removing all existing indices for \"" + dbName + "\""); + trace.logger.trace("Freeze.MapInternal.MapI", "Removing all existing indices for \"" + dbName + "\""); } CatalogIndexList catalogIndexList = new CatalogIndexList(connection, Util.catalogIndexListName(), true); @@ -122,7 +122,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> if(trace.level >= 2) { - trace.logger.trace("Freeze.Map", "Renaming \"" + dbName + "\" to \"" + oldDbName + "\""); + trace.logger.trace("Freeze.MapInternal.MapI", "Renaming \"" + dbName + "\" to \"" + oldDbName + "\""); } connection.dbEnv().getEnv().renameDatabase(txn, dbName, null, oldDbName); @@ -137,7 +137,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> if(trace.level >= 2) { - trace.logger.trace("Freeze.Map", "Writing contents of \"" + oldDbName + "\" to fresh \"" + + trace.logger.trace("Freeze.MapInternal.MapI", "Writing contents of \"" + oldDbName + "\" to fresh \"" + dbName + "\""); } @@ -164,7 +164,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> if(trace.level >= 2) { - trace.logger.trace("Freeze.Map", "Transfer complete; removing \"" + oldDbName + "\""); + trace.logger.trace("Freeze.MapInternal.MapI", "Transfer complete; removing \"" + oldDbName + "\""); } connection.dbEnv().getEnv().removeDatabase(txn, oldDbName, null); @@ -188,7 +188,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> { if(trace.deadlockWarning) { - trace.logger.warning("Deadlock in Freeze.Map.recreate on Db \"" + dbName + "\"; retrying ..."); + trace.logger.warning("Deadlock in Freeze.MapInternal.MapI.recreate on Db \"" + dbName + "\"; retrying ..."); } // @@ -348,7 +348,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> if(_trace.level >= 1) { - _trace.logger.trace("Freeze.Map", "destroying \"" + _dbName + "\""); + _trace.logger.trace("Freeze.MapInternal.MapI", "destroying \"" + _dbName + "\""); } closeDb(); @@ -400,7 +400,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> { if(_trace.deadlockWarning) { - _trace.logger.warning("Deadlock in Freeze.Map.destroy on Db \"" + _dbName + "\"; retrying..."); + _trace.logger.warning("Deadlock in Freeze.MapInternal.MapI.destroy on Db \"" + _dbName + "\"; retrying..."); } // @@ -687,39 +687,46 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> if(_db == null) { DatabaseException ex = new DatabaseException(); - ex.message = _trace.errorPrefix + "\"" + _dbName + "\" has been closed"; + ex.message = _trace.errorPrefix + "\"" + _dbName + "\" is closed"; throw ex; } - // - // The number of records cannot be cached and then adjusted by - // the member functions since the map would no longer work in - // the presence of transactions - if a record is added (and - // the size adjusted) and the transaction aborted then the - // cached map size() would be incorrect. - // - - // - // TODO: DB_FAST_STAT doesn't seem to do what the - // documentation says... - // - try - { - com.sleepycat.db.StatsConfig config = new com.sleepycat.db.StatsConfig(); - // - // TODO: DB_FAST_STAT doesn't seem to do what the - // documentation says... - // - //config.setFast(true); - com.sleepycat.db.BtreeStats s = (com.sleepycat.db.BtreeStats)_db.db().getStats(null, config); - return s.getNumData(); - } - catch(com.sleepycat.db.DatabaseException e) + for(;;) { - DatabaseException ex = new DatabaseException(); - ex.initCause(e); - ex.message = _trace.errorPrefix + "Db.stat: " + e.getMessage(); - throw ex; + + try + { + com.sleepycat.db.BtreeStats s = (com.sleepycat.db.BtreeStats)_db.db().getStats(_connection.dbTxn(), null); + return s.getNumKeys(); + } + catch(com.sleepycat.db.DeadlockException e) + { + if(_connection.dbTxn() != null) + { + DeadlockException ex = new DeadlockException( + _trace.errorPrefix + "Db.getStats: " + e.getMessage(), _connection.currentTransaction()); + ex.initCause(e); + throw ex; + } + else + { + if(_trace.deadlockWarning) + { + _trace.logger.warning("Deadlock in Freeze.MapInternal.MapI.size while " + "reading Db \"" + _dbName + + "\"; retrying..."); + } + // + // Try again + // + } + } + catch(com.sleepycat.db.DatabaseException e) + { + DatabaseException ex = new DatabaseException(); + ex.initCause(e); + ex.message = _trace.errorPrefix + "Db.getStats: " + e.getMessage(); + throw ex; + } } } @@ -767,7 +774,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> { if(_trace.deadlockWarning) { - _trace.logger.warning("Deadlock in Freeze.Map.containsValue while " + "iterating over Db \"" + + _trace.logger.warning("Deadlock in Freeze.MapInternal.MapI.containsValue while " + "iterating over Db \"" + _dbName + "\"; retrying..."); } @@ -795,7 +802,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> if(_db == null) { DatabaseException ex = new DatabaseException(); - ex.message = _trace.errorPrefix + "\"" + _dbName + "\" has been closed"; + ex.message = _trace.errorPrefix + "\"" + _dbName + "\" is closed"; throw ex; } @@ -807,7 +814,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> if(_trace.level >= 2) { - _trace.logger.trace("Freeze.Map", "checking key in Db \"" + _dbName + "\""); + _trace.logger.trace("Freeze.MapInternal.MapI", "checking key in Db \"" + _dbName + "\""); } for(;;) @@ -830,7 +837,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> { if(_trace.deadlockWarning) { - _trace.logger.warning("Deadlock in Freeze.Map.containsKey while " + "reading Db \"" + _dbName + + _trace.logger.warning("Deadlock in Freeze.MapInternal.MapI.containsKey while " + "reading Db \"" + _dbName + "\"; retrying..."); } // @@ -908,7 +915,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> if(_db == null) { DatabaseException ex = new DatabaseException(); - ex.message = _trace.errorPrefix + "\"" + _dbName + "\" has been closed"; + ex.message = _trace.errorPrefix + "\"" + _dbName + "\" is closed"; throw ex; } @@ -934,7 +941,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> { if(_trace.deadlockWarning) { - _trace.logger.warning("Deadlock in Freeze.Map.clear on Db \"" + _dbName + "\"; retrying..."); + _trace.logger.warning("Deadlock in Freeze.MapInternal.MapI.clear on Db \"" + _dbName + "\"; retrying..."); } // @@ -1135,7 +1142,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> if(_db.db() == null) { DatabaseException ex = new DatabaseException(); - ex.message = _trace.errorPrefix + "\"" + dbName() + "\" has been closed"; + ex.message = _trace.errorPrefix + "\"" + dbName() + "\" is closed"; throw ex; } @@ -1275,7 +1282,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> if(_db == null) { DatabaseException ex = new DatabaseException(); - ex.message = _trace.errorPrefix + "\"" + _dbName + "\" has been closed"; + ex.message = _trace.errorPrefix + "\"" + _dbName + "\" is closed"; throw ex; } @@ -1284,7 +1291,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> if(_trace.level >= 2) { - _trace.logger.trace("Freeze.Map", "writing value in Db \"" + _dbName + "\""); + _trace.logger.trace("Freeze.MapInternal.MapI", "writing value in Db \"" + _dbName + "\""); } com.sleepycat.db.Transaction txn = _connection.dbTxn(); @@ -1313,7 +1320,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> { if(_trace.deadlockWarning) { - _trace.logger.warning("Deadlock in Freeze.Map.putImpl while " + "writing into Db \"" + + _trace.logger.warning("Deadlock in Freeze.MapInternal.MapI.putImpl while " + "writing into Db \"" + _dbName + "\"; retrying..."); } @@ -1338,13 +1345,13 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> if(_db == null) { DatabaseException ex = new DatabaseException(); - ex.message = _trace.errorPrefix + "\"" + _dbName + "\" has been closed"; + ex.message = _trace.errorPrefix + "\"" + _dbName + "\" is closed"; throw ex; } if(_trace.level >= 2) { - _trace.logger.trace("Freeze.Map", "deleting value from Db \"" + _dbName + "\""); + _trace.logger.trace("Freeze.MapInternal.MapI", "deleting value from Db \"" + _dbName + "\""); } com.sleepycat.db.Transaction txn = _connection.dbTxn(); @@ -1373,7 +1380,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> { if(_trace.deadlockWarning) { - _trace.logger.warning("Deadlock in Freeze.Map.removeImpl while " + "writing into Db \"" + + _trace.logger.warning("Deadlock in Freeze.MapInternal.MapI.removeImpl while " + "writing into Db \"" + _dbName + "\"; retrying..."); } @@ -1398,7 +1405,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> if(_db == null) { DatabaseException ex = new DatabaseException(); - ex.message = _trace.errorPrefix + "\"" + _dbName + "\" has been closed"; + ex.message = _trace.errorPrefix + "\"" + _dbName + "\" is closed"; throw ex; } @@ -1406,7 +1413,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> if(_trace.level >= 2) { - _trace.logger.trace("Freeze.Map", "reading value from Db \"" + _dbName + "\""); + _trace.logger.trace("Freeze.MapInternal.MapI", "reading value from Db \"" + _dbName + "\""); } for(;;) @@ -1436,7 +1443,7 @@ public abstract class MapI<K, V> extends java.util.AbstractMap<K, V> { if(_trace.deadlockWarning) { - _trace.logger.warning("Deadlock in Freeze.Map.getImpl while " + "reading Db \"" + _dbName + + _trace.logger.warning("Deadlock in Freeze.MapInternal.MapI.getImpl while " + "reading Db \"" + _dbName + "\"; retrying..."); } |