Author: toad
Date: 2008-04-30 16:58:33 +0000 (Wed, 30 Apr 2008)
New Revision: 19629
Modified:
trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
Log:
Refactor slightly.
Modified: trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
===================================================================
--- trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2008-04-30
16:27:57 UTC (rev 19628)
+++ trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2008-04-30
16:58:33 UTC (rev 19629)
@@ -1044,17 +1044,7 @@
if (routingkey == null) { // can't
recover, mark this as free
t =
environment.beginTransaction(null, null);
- StoreBlock storeBlock = new
StoreBlock(l, --minLRU);
- byte[] buf = new byte[32];
- random.nextBytes(buf);
- DatabaseEntry routingkeyDBE =
new DatabaseEntry(buf);
- DatabaseEntry blockDBE = new
DatabaseEntry();
-
storeBlockTupleBinding.objectToEntry(storeBlock, blockDBE);
- OperationStatus op =
keysDB.putNoOverwrite(t, routingkeyDBE, blockDBE);
- if (op !=
OperationStatus.SUCCESS) {
- Logger.error(this,
"Impossible operation status inserting bogus key to LRU: " + op);
- addFreeBlock(l, true,
"Impossible to add (invalid) to LRU: " + op);
- }
+ reconstructAddFreeBlock(l, t,
--minLRU);
t.commitNoSync();
t = null;
continue;
@@ -1118,6 +1108,20 @@
}
}
+ private void reconstructAddFreeBlock(long l, Transaction t, long lru)
throws DatabaseException {
+ StoreBlock storeBlock = new StoreBlock(l, lru);
+ byte[] buf = new byte[32];
+ random.nextBytes(buf);
+ DatabaseEntry routingkeyDBE = new DatabaseEntry(buf);
+ DatabaseEntry blockDBE = new DatabaseEntry();
+ storeBlockTupleBinding.objectToEntry(storeBlock, blockDBE);
+ OperationStatus op = keysDB.putNoOverwrite(t, routingkeyDBE,
blockDBE);
+ if (op != OperationStatus.SUCCESS) {
+ Logger.error(this, "Impossible operation status
inserting bogus key to LRU: " + op);
+ addFreeBlock(l, true, "Impossible to add (invalid) to
LRU: " + op);
+ }
+ }
+
private boolean isAllNull(byte[] buf) {
for(int i=0;i<buf.length;i++)
if(buf[i] != 0) return false;