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>