Author: toad
Date: 2007-03-08 14:43:09 +0000 (Thu, 08 Mar 2007)
New Revision: 12033

Modified:
   trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
Log:
Count dupes in reconstruct

Modified: trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
===================================================================
--- trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2007-03-08 
14:33:11 UTC (rev 12032)
+++ trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2007-03-08 
14:43:09 UTC (rev 12033)
@@ -591,7 +591,7 @@
        }

        private long checkForHoles(long blocksInFile, boolean dontTruncate) 
throws DatabaseException {
-               System.err.println("Checking for holes in database...");
+               System.err.println("Checking for holes in database... 
"+blocksInFile+" blocks in file");
                WrapperManager.signalStarting(5*60*1000 + 
(int)blocksInFile*100); // 10/sec
                long holes = 0;
                long maxPresent = 0;
@@ -1069,6 +1069,7 @@
                byte[] header = new byte[headerBlockSize];
                byte[] data = new byte[dataBlockSize];
                long l = 0;
+               long dupes = 0;
                try {
                        chkStore.seek(0);
                        for(l=0;true;l++) {
@@ -1101,10 +1102,11 @@
                                        DatabaseEntry routingkeyDBE = new 
DatabaseEntry(routingkey);
                                        DatabaseEntry blockDBE = new 
DatabaseEntry();
                                        
storeBlockTupleBinding.objectToEntry(storeBlock, blockDBE);
-                                       chkDB.put(t,routingkeyDBE,blockDBE);
+                                       OperationStatus op = 
chkDB.putNoOverwrite(t,routingkeyDBE,blockDBE);
+                                       if(op == OperationStatus.KEYEXIST) 
dupes++;
                                        t.commit();
                                        if(l % 1024 == 0)
-                                               System.out.println("Key "+l+ 
'/' +(chkStore.length()/(dataBlockSize+headerBlockSize))+" OK");
+                                               System.out.println("Key "+l+ 
'/' +(chkStore.length()/(dataBlockSize+headerBlockSize))+" OK ("+dupes+" 
dupes)");
                                        t = null;
                                } finally {
                                        if(t != null) t.abort();


Reply via email to