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;


Reply via email to