The db4o branch is now approaching usability. This is a branch (temporary 
fork) based on build 1151, which uses the object database db4o to store 
persistent requests and inserts. The objectives and intentions here:
- True request resuming: The db4o branch resumes requests (not only inserts) 
from exactly where they were when the node shut down. The current 
trunk/stable Freenet code remembers what it was requesting, but has to resume 
requests from the datastore, which means heavy disk access for a long time 
after startup.
- Faster startup: The db4o branch does not have to read in a list of 
persistent requests on startup, so startup is quicker.
- Memory usage decoupled from queue size: The db4o branch "pages in" requests 
on demand, so in theory can run with a relatively low memory limit, even with 
a very large queue. In practice this would involve a lot of disk I/O, so it 
may not work so well in practice, but at least it will degrade gradually, 
rather than getting OutOfMemoryException's!

Wider testing would be appreciated at this point, to identify any bugs and 
work towards merging. As with any testing of prerelease Freenet code, you 
should make a backup of all files with a port number in them (node-12345 etc) 
before trying it. It will attempt to automatically migrate your downloads and 
uploads, and will rename downloads.dat.gz to downloads.dat.gz.old.pre-db4o. 
That is tested with requests but not yet with inserts. It may use more disk 
space than the trunk version as it does not yet clean up as thoroughly as the 
trunk version. It may erase your hard drive, eat your cat and turn you in to 
the FBI for downloading pictures of naked chickens. The data is stored in 
node.db4o, the format should be relatively stable but *may* change if serious 
issues arise, in which case you *may* lose all your data (persistent 
downloads/uploads) and have to wipe it and start again.

How to install:
- Download db4o 6.4 for Java from www.db4o.com (they also do a .net version).
- You will need the following libraries from the zip file (in lib/):
db4o-6.4.44.10817-java1.2.jar
db4o-6.4.44.10817-nqopt.jar
bloat-1.0.jar
- Add them to your classpath in wrapper.conf:
wrapper.java.classpath.1=freenet.jar
wrapper.java.classpath.2=freenet-ext.jar
wrapper.java.classpath.3=db4o-6.4.38.10595-java1.2.jar
wrapper.java.classpath.4=db4o-6.4.38.10595-nqopt.jar
wrapper.java.classpath.5=bloat-1.0.jar

The first two lines (or something similar) should be already in your 
wrapper.conf. If you have more classpath lines already, then increment the 
number after "classpath".
- Install SVN (subversion.tigris.org), and check out the db4o branch sources:
svn co --ignore-externals 
http://freenet.googlecode.com/svn/branches/db4o/freenet/
- Once checked out, you can update the source:
svn update --ignore-externals
- Build the code:
ant
- Copy the resulting lib/freenet-cvs-latest.jar to freenet.jar in your node.
- Start the node up, and tell me how it goes!

Any feedback can go to the devl mailing list, the FMS board, me personally, or 
the #freenet-testers channel on irc.freenode.org. Have fun!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20080702/5b4eecff/attachment.pgp>

Reply via email to