Author: j16sdiz Date: 2008-04-26 04:59:08 +0000 (Sat, 26 Apr 2008) New Revision: 19568
Modified:
trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
Log:
don't recconstruct/log all zero block in BDBFS
Modified: trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
===================================================================
--- trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2008-04-26
03:57:34 UTC (rev 19567)
+++ trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2008-04-26
04:59:08 UTC (rev 19568)
@@ -1026,7 +1026,7 @@
routingkey = newkey;
}
}
- if(routingkey == null) {
+ if (routingkey == null &&
!isAllNull(header) && !isAllNull(data)) {
try {
StorableBlock block =
callback.construct(data, header, null, readKey ? keyBuf : null);
routingkey =
block.getRoutingKey();
@@ -1035,23 +1035,27 @@
Logger.error(this, err,
e);
System.err.println(err);
failures++;
- 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);
- }
- t.commitNoSync();
- t = null;
- continue;
}
- }
+ }
+
+ 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);
+ }
+ t.commitNoSync();
+ t = null;
+ continue;
+ }
+
t =
environment.beginTransaction(null,null);
StoreBlock storeBlock = new
StoreBlock(l, lruVal);
DatabaseEntry routingkeyDBE = new
DatabaseEntry(routingkey);
