summaryrefslogtreecommitdiff
path: root/java/src/Freeze/EvictorIteratorI.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/Freeze/EvictorIteratorI.java')
-rw-r--r--java/src/Freeze/EvictorIteratorI.java340
1 files changed, 170 insertions, 170 deletions
diff --git a/java/src/Freeze/EvictorIteratorI.java b/java/src/Freeze/EvictorIteratorI.java
index 586100ad4f1..9e88aa72a36 100644
--- a/java/src/Freeze/EvictorIteratorI.java
+++ b/java/src/Freeze/EvictorIteratorI.java
@@ -14,194 +14,194 @@ class EvictorIteratorI extends Ice.LocalObjectImpl implements EvictorIterator
public boolean
hasNext()
{
- if(_batchIterator != null && _batchIterator.hasNext())
- {
- return true;
- }
- else
- {
- _batchIterator = nextBatch();
- return (_batchIterator != null);
- }
+ if(_batchIterator != null && _batchIterator.hasNext())
+ {
+ return true;
+ }
+ else
+ {
+ _batchIterator = nextBatch();
+ return (_batchIterator != null);
+ }
}
public Ice.Identity
next()
{
- if(hasNext())
- {
- return (Ice.Identity) _batchIterator.next();
- }
- else
- {
- throw new NoSuchElementException();
- }
+ if(hasNext())
+ {
+ return (Ice.Identity) _batchIterator.next();
+ }
+ else
+ {
+ throw new NoSuchElementException();
+ }
}
EvictorIteratorI(ObjectStore store, int batchSize)
{
- _store = store;
- _more = (store != null);
- _batchSize = batchSize;
-
- assert batchSize > 0;
+ _store = store;
+ _more = (store != null);
+ _batchSize = batchSize;
+
+ assert batchSize > 0;
- _key.setReuseBuffer(true);
+ _key.setReuseBuffer(true);
- //
- // dlen is 0, so we should not retrieve any value
- //
- _value.setPartial(true);
+ //
+ // dlen is 0, so we should not retrieve any value
+ //
+ _value.setPartial(true);
}
private java.util.Iterator
nextBatch()
{
- EvictorI.DeactivateController deactivateController = _store.evictor().deactivateController();
- deactivateController.lock();
-
- try
- {
- if(!_more)
- {
- return null;
- }
-
- java.util.List evictorElements = null;
-
- Ice.Communicator communicator = _store.communicator();
-
- byte[] firstKey = null;
- if(_key.getSize() > 0)
- {
- firstKey = new byte[_key.getSize()];
- System.arraycopy(_key.getData(), 0, firstKey, 0, firstKey.length);
- }
-
- try
- {
- for(;;)
- {
- com.sleepycat.db.Cursor dbc = null;
-
- _batch = new java.util.ArrayList();
-
- try
- {
- //
- // Move to the first record
- //
- boolean range = false;
- if(firstKey != null)
- {
- //
- // _key represents the next element not yet returned
- // if it has been deleted, we want the one after
- //
- range = true;
- }
-
- dbc = _store.db().openCursor(null, null);
-
- boolean done = false;
- do
- {
- com.sleepycat.db.OperationStatus status;
- if(range)
- {
- status = dbc.getSearchKeyRange(_key, _value, null);
- }
- else
- {
- status = dbc.getNext(_key, _value, null);
- }
- _more = (status == com.sleepycat.db.OperationStatus.SUCCESS);
+ EvictorI.DeactivateController deactivateController = _store.evictor().deactivateController();
+ deactivateController.lock();
+
+ try
+ {
+ if(!_more)
+ {
+ return null;
+ }
+
+ java.util.List evictorElements = null;
+
+ Ice.Communicator communicator = _store.communicator();
+
+ byte[] firstKey = null;
+ if(_key.getSize() > 0)
+ {
+ firstKey = new byte[_key.getSize()];
+ System.arraycopy(_key.getData(), 0, firstKey, 0, firstKey.length);
+ }
+
+ try
+ {
+ for(;;)
+ {
+ com.sleepycat.db.Cursor dbc = null;
+
+ _batch = new java.util.ArrayList();
+
+ try
+ {
+ //
+ // Move to the first record
+ //
+ boolean range = false;
+ if(firstKey != null)
+ {
+ //
+ // _key represents the next element not yet returned
+ // if it has been deleted, we want the one after
+ //
+ range = true;
+ }
+
+ dbc = _store.db().openCursor(null, null);
+
+ boolean done = false;
+ do
+ {
+ com.sleepycat.db.OperationStatus status;
+ if(range)
+ {
+ status = dbc.getSearchKeyRange(_key, _value, null);
+ }
+ else
+ {
+ status = dbc.getNext(_key, _value, null);
+ }
+ _more = (status == com.sleepycat.db.OperationStatus.SUCCESS);
- if(_more)
- {
- range = false;
+ if(_more)
+ {
+ range = false;
- if(_batch.size() < _batchSize)
- {
- Ice.Identity ident = ObjectStore.unmarshalKey(_key.getData(), communicator);
- _batch.add(ident);
- }
- else
- {
- //
- // Keep the last element in _key
- //
- done = true;
- }
- }
- }
- while(!done && _more);
-
- break; // for (;;)
- }
- catch(com.sleepycat.db.DeadlockException dx)
- {
- if(firstKey != null)
- {
- assert(_key.getData().length >= firstKey.length);
- System.arraycopy(firstKey, 0, _key.getData(), 0, firstKey.length);
- _key.setSize(firstKey.length);
- }
- else
- {
- _key.setSize(0);
- }
-
- if(_store.evictor().deadlockWarning())
- {
- communicator.getLogger().warning("Deadlock in Freeze.EvictorIteratorI.load while " +
- "iterating over Db \"" + _store.evictor().filename() + "/" + _store.dbName() +
- "\"; retrying...");
- }
-
- //
- // Retry
- //
- }
- finally
- {
- if(dbc != null)
- {
- try
- {
- dbc.close();
- }
- catch(com.sleepycat.db.DeadlockException dx)
- {
- //
- // Ignored
- //
- }
- }
- }
- }
- }
- catch(com.sleepycat.db.DatabaseException dx)
- {
- DatabaseException ex = new DatabaseException();
- ex.initCause(dx);
- ex.message = _store.evictor().errorPrefix() + "Db.cursor: " + dx.getMessage();
- throw ex;
- }
-
- if(_batch.size() == 0)
- {
- return null;
- }
- else
- {
- return _batch.listIterator();
- }
- }
- finally
- {
- deactivateController.unlock();
- }
+ if(_batch.size() < _batchSize)
+ {
+ Ice.Identity ident = ObjectStore.unmarshalKey(_key.getData(), communicator);
+ _batch.add(ident);
+ }
+ else
+ {
+ //
+ // Keep the last element in _key
+ //
+ done = true;
+ }
+ }
+ }
+ while(!done && _more);
+
+ break; // for (;;)
+ }
+ catch(com.sleepycat.db.DeadlockException dx)
+ {
+ if(firstKey != null)
+ {
+ assert(_key.getData().length >= firstKey.length);
+ System.arraycopy(firstKey, 0, _key.getData(), 0, firstKey.length);
+ _key.setSize(firstKey.length);
+ }
+ else
+ {
+ _key.setSize(0);
+ }
+
+ if(_store.evictor().deadlockWarning())
+ {
+ communicator.getLogger().warning("Deadlock in Freeze.EvictorIteratorI.load while " +
+ "iterating over Db \"" + _store.evictor().filename() + "/" + _store.dbName() +
+ "\"; retrying...");
+ }
+
+ //
+ // Retry
+ //
+ }
+ finally
+ {
+ if(dbc != null)
+ {
+ try
+ {
+ dbc.close();
+ }
+ catch(com.sleepycat.db.DeadlockException dx)
+ {
+ //
+ // Ignored
+ //
+ }
+ }
+ }
+ }
+ }
+ catch(com.sleepycat.db.DatabaseException dx)
+ {
+ DatabaseException ex = new DatabaseException();
+ ex.initCause(dx);
+ ex.message = _store.evictor().errorPrefix() + "Db.cursor: " + dx.getMessage();
+ throw ex;
+ }
+
+ if(_batch.size() == 0)
+ {
+ return null;
+ }
+ else
+ {
+ return _batch.listIterator();
+ }
+ }
+ finally
+ {
+ deactivateController.unlock();
+ }
}
private final ObjectStore _store;