[elephant-devel] Berkeley DB 4.4 Patch in HEAD + improvements

Ian Eslick eslick at csail.mit.edu
Mon Sep 4 05:02:11 UTC 2006


Recent CVS updates encompass:
- I added Vladimir's BDB 4.3->4.4 patch to the repository
- Fixed the bugs Vladimir reported; current state is bug free on
Allegro/Mac OS/BDB
- Re-organized sleepycat.lisp a bit to accommodate the BDB 4.4
convention changes
- Added a new method to the backend API 'optimize-storage'.
- Made serialization properly re-entrant (circularity-hash was not
re-entrant)
- BUGFIX: add-index with the populate option created incomplete
secondary indicies due to a non-local exit within with-transaction. 
This was introduced by an earlier bugfix to add-index to address out of
memory errors on very large indices.
- Updated the TODO list for 0.6.1

BDB 4.4 upgrade notes:

Existing users of the Berkeley DB backend using v4.3 MUST upgrade to
Berkeley DB v4.4.20 or later.  Upgrade is painless and quite safe. 
Instructions are included in the file "UPGRADE-BDB" in the elephant
root.  I will also send an e-mail update to the list shortly.

New API command (exploit new feature in BDB 4.4):

'optimize-storage' is currently implemented only on BDB backends for now
and takes the two flags described in Berkeley API docs.  I haven't
figured out a clean way to map lisp start/stop keys to database keys so
do not use the stop/start keywords for now.  Using this API function
with the default flags and store-controller will cause all empty pages
to be released back to the file system.

I did not add a test case for this command as yet, but I did run a test
DB to confirm that it reclaims storage.  Create a bunch of large
persistent objects, check out the DB file sizes, delete them using
delete-instances, call optimize-storage and then check out the file
sizes again.  If you've been working with really large DB's, this is a
sweet feature.

Thanks again to Vladimir for taking the time to look into this and
submit the patch!

Cheers,
Ian



More information about the elephant-devel mailing list