Author: j16sdiz
Date: 2008-05-20 10:53:09 +0000 (Tue, 20 May 2008)
New Revision: 19962

Modified:
   trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
Log:
BDBFS: read header only when needed


Modified: trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
===================================================================
--- trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2008-05-19 
14:13:41 UTC (rev 19961)
+++ trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2008-05-20 
10:53:09 UTC (rev 19962)
@@ -990,9 +990,7 @@
                                        System.err.println("File pointer is 
"+storeRAF.getFilePointer()+" but should be "+((headerBlockSize + 
dataBlockSize)));
                                        
System.exit(NodeInitException.EXIT_STORE_RECONSTRUCT);
                                }
-                               storeRAF.readFully(header);
                                boolean dataRead = false;
-                               try {
                                        if(lruRAFLength > (l+1)*8) {
                                                try {
                                                        lruVal = 
lruRAF.readLong();
@@ -1032,6 +1030,8 @@
                                                        }
                                                }
                                                if (!dataRead) {
+                                                       storeRAF.seek(l * 
(headerBlockSize + dataBlockSize));
+                                                       
storeRAF.readFully(header);
                                                        
storeRAF.readFully(data);
                                                        dataRead = true;
                                                }
@@ -1067,6 +1067,8 @@
                                                                byte[] 
oldRoutingkey = routingkey;
                                                                try {
                                                                        if 
(!dataRead) {
+                                                                               
storeRAF.seek(l * (headerBlockSize + dataBlockSize));
+                                                                               
storeRAF.readFully(header);
                                                                                
storeRAF.readFully(data);
                                                                                
dataRead = true;
                                                                        }
@@ -1124,11 +1126,6 @@
                                        } finally {
                                                if(t != null) t.abort();
                                        }
-                               } finally {
-                                       if (!dataRead) {
-                                               storeRAF.skipBytes(data.length);
-                                       }
-                               }
                        }
                } catch (EOFException e) {
                        long size = l * (dataBlockSize + headerBlockSize);


Reply via email to