Author: toad
Date: 2007-03-09 17:40:35 +0000 (Fri, 09 Mar 2007)
New Revision: 12063
Modified:
trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
Log:
Delete surplus keys in maybeSlowShrink
Modified: trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
===================================================================
--- trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2007-03-09
17:32:23 UTC (rev 12062)
+++ trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2007-03-09
17:40:35 UTC (rev 12063)
@@ -782,7 +782,7 @@
// Now move all the wantedMove blocks onto the corresponding
unwantedMove's.
- WrapperManager.signalStarting(5*60*1000 + wantedMoveNums.length*1000);
// 1 per second
+ WrapperManager.signalStarting(5*60*1000 + wantedMoveNums.length*1000 +
alreadyDropped.size() * 100); // 1 per second
byte[] buf = new byte[headerBlockSize + dataBlockSize];
t = null;
@@ -878,12 +878,30 @@
// If there are any slots left over, they must be free.
freeBlocks.clear();
for(int
i=wantedMoveNums.length;i<unwantedMoveNums.length+freeEarlySlots.length;i++) {
+ long blockNo;
+ String reason;
if(i < freeEarlySlots.length) {
- addFreeBlock(freeEarlySlots[i], true, "early slot "+i);
+ blockNo = freeEarlySlots[i];
+ reason = "early slot "+i;
} else {
-
addFreeBlock(unwantedMoveNums[i-freeEarlySlots.length].longValue(), true,
"unwanted "+(i-freeEarlySlots.length));
+ blockNo =
unwantedMoveNums[i-freeEarlySlots.length].longValue();
+ reason = "unwanted "+(i-freeEarlySlots.length);
}
+ DatabaseEntry unwantedBlockEntry = new DatabaseEntry();
+ LongBinding.longToEntry(blockNo, unwantedBlockEntry);
+ chkDB_blockNum.delete(t, unwantedBlockEntry);
+ if(i % 1024 == 0) {
+ System.out.println("Trimmed surplus keys in
database:
"+(i-wantedMoveNums.length)+"/"+(unwantedMoveNums.length+freeEarlySlots.length-wantedMoveNums.length));
+ t.commit();
+ if(i ==
unwantedMoveNums.length+freeEarlySlots.length-1)
+ t = null;
+ else
+ t =
environment.beginTransaction(null,null);
+ }
+ addFreeBlock(blockNo, true, reason);
}
+ if(t != null) t.commit();
+ t = null;
System.out.println("Finishing shrink"); // FIXME remove