Author: toad
Date: 2008-01-05 22:47:02 +0000 (Sat, 05 Jan 2008)
New Revision: 16934
Modified:
trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
Log:
Fix bug causing the datastore (each file) to be halved in size on each
reconstruction (!!)
Modified: trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
===================================================================
--- trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2008-01-05
22:31:07 UTC (rev 16933)
+++ trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2008-01-05
22:47:02 UTC (rev 16934)
@@ -1137,8 +1137,15 @@
Transaction t = null;
storeRAF.readFully(header);
storeRAF.readFully(data);
- if(lruRAFLength > (l+1)*8)
- lruVal = lruRAF.readLong();
+ if(lruRAFLength > (l+1)*8) {
+ try {
+ lruVal = lruRAF.readLong();
+ } catch (EOFException e) {
+ System.err.println("EOF reading
LRU file at "+lruRAF.getFilePointer()+" of "+lruRAF.length()+" l = "+l+" orig
lru length = "+lruRAFLength);
+ lruVal = 0;
+ lruRAFLength = 0;
+ }
+ }
if(lruVal == 0) {
Logger.normal(this, "Block "+l+" :
resetting LRU");
lruVal = getNewRecentlyUsed();
@@ -1147,10 +1154,14 @@
}
boolean readKey = false;
if(keysRAF != null && keysRAFLength >
(l+1)*keyLength) {
- keysRAF.readFully(keyBuf);
- readKey = true;
+ try {
+ keysRAF.readFully(keyBuf);
+ readKey = true;
+ } catch (EOFException e) {
+ System.err.println("EOF reading
keys file at "+keysRAF.getFilePointer()+" of "+keysRAF.length()+" l = "+l+"
orig keys length = "+keysRAFLength);
+ readKey = false;
+ }
}
- lruVal = lruRAF.readLong();
try {
byte[] routingkey = null;
try {
@@ -1193,6 +1204,7 @@
} catch (EOFException e) {
long size = l * (dataBlockSize + headerBlockSize);
System.err.println("Found end of store, truncating to
"+l+" blocks : "+size+" ("+failures+" failures "+dupes+" dupes)");
+ e.printStackTrace();
blocksInStore = l;
try {
storeRAF.setLength(size);