diff options
-rw-r--r-- | java/src/Freeze/EvictorIteratorI.java | 15 | ||||
-rw-r--r-- | java/src/Freeze/Map.java | 4 |
2 files changed, 11 insertions, 8 deletions
diff --git a/java/src/Freeze/EvictorIteratorI.java b/java/src/Freeze/EvictorIteratorI.java index 7ae781bd8e2..7f73cc4850b 100644 --- a/java/src/Freeze/EvictorIteratorI.java +++ b/java/src/Freeze/EvictorIteratorI.java @@ -28,6 +28,14 @@ class EvictorIteratorI extends Ice.LocalObjectImpl implements EvictorIterator java.util.Map.Entry entry = (java.util.Map.Entry)iterator.next(); _identities.add(entry.getKey()); } + + // + // Close the iterator explicitly. We don't want to wait for + // the garbage collection to destroy the iterator since the + // iterator consumes resources (database locks for instance). + // + ((Freeze.Map.EntryIterator)iterator).close(); + _iterator = _identities.iterator(); } @@ -53,13 +61,6 @@ class EvictorIteratorI extends Ice.LocalObjectImpl implements EvictorIterator public void destroy() { - // - // Close the iterator explicitly. We don't want to wait for - // the garbage collection to destroy the iterator since the - // iterator consumes resources (database locks for instance). - // - ((Freeze.Map.EntryIterator)_iterator).close(); - _identities = null; _iterator = null; } diff --git a/java/src/Freeze/Map.java b/java/src/Freeze/Map.java index a9a06943eeb..d7c936fe2a4 100644 --- a/java/src/Freeze/Map.java +++ b/java/src/Freeze/Map.java @@ -411,6 +411,7 @@ public abstract class Map extends java.util.AbstractMap // // Clone the cursor so that error handling is simpler. // + assert _cursor != null; DBCursor clone = _cursor._clone(); try @@ -463,6 +464,7 @@ public abstract class Map extends java.util.AbstractMap private Entry getEntry() { + assert _cursor != null; _cursor.curr(_keyHolder, _valueHolder); return new Entry(Map.this, _cursor, _keyHolder.value, _valueHolder.value); } @@ -470,7 +472,7 @@ public abstract class Map extends java.util.AbstractMap private boolean getNext() { - if(_next == null) + if(_next == null && _cursor != null) { if(_cursor.next()) { |