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);
