Author: zothar
Date: 2006-06-04 04:29:29 +0000 (Sun, 04 Jun 2006)
New Revision: 9038

Modified:
   trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
Log:
Add expanded information to an IOException I was getting with Debian Sarge 
Linux running IBM's 1.5 JVM on a PowerPPC eMac.  Perhaps we should check for a 
2 GB limit on startup and report if a problem?

Modified: trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
===================================================================
--- trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2006-06-04 
04:17:21 UTC (rev 9037)
+++ trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2006-06-04 
04:29:29 UTC (rev 9038)
@@ -183,7 +183,16 @@
                        byte[] header = new byte[headerBlockSize];
                        byte[] data = new byte[dataBlockSize];
                        synchronized(chkStore) {
-                               
chkStore.seek(storeBlock.offset*(long)(dataBlockSize+headerBlockSize));
+                               long seekTarget = 
storeBlock.offset*(long)(dataBlockSize+headerBlockSize);
+                       try {
+                                       chkStore.seek(seekTarget);
+                               } catch (IOException ioe) {
+                                       if(seekTarget > (2*1024*1024*1024))
+                                               Logger.error(this, "Environment 
does not support files greater than 2 GB?");
+                                               System.out.println("Environment 
does not support files greater than 2 GB? (exception to follow)");
+                                       Logger.error(this, "Caught IOException 
on chkStore.seek("+seekTarget+")");
+                                       throw ioe;
+                               }
                                chkStore.readFully(header);
                                chkStore.readFully(data);
                        }
@@ -520,7 +529,15 @@
                                DatabaseEntry blockDBE = new DatabaseEntry();
                        storeBlockTupleBinding.objectToEntry(storeBlock, 
blockDBE);
                        chkDB.put(t,routingkeyDBE,blockDBE);
-                       chkStore.seek(byteOffset);
+                       try {
+                         chkStore.seek(byteOffset);
+                       } catch (IOException ioe) {
+                         if(byteOffset > (2*1024*1024*1024))
+                           Logger.error(this, "Environment does not support 
files greater than 2 GB?");
+                           System.out.println("Environment does not support 
files greater than 2 GB? (exception to follow)");
+                         Logger.error(this, "Caught IOException on 
chkStore.seek("+byteOffset+")");
+                             throw ioe;
+                       }
                        chkStore.write(header);
                        chkStore.write(data);
                        t.commit();


Reply via email to