[Dev] branch merge is complete

Andi Vajda vajda at osafoundation.org
Tue Jan 10 14:58:28 PST 2006


My branch merge is now complete. I rebuilt the binaries that changed for 
release and debug on all 3 OS. If you don't do your own build, you need to run 
'make install' in chandler after your next 'svn update' there.

The repository format changed, you need to also re-create your repository 
after this update.

For those who do their own builds, you need to rebuild the binaries that 
changed in external before building chandlerdb in internal.

Here is what I changed while on my branch and is now included on the trunk:

Berkeley DB
-----------
   - integrated new version of Berkeley DB, 4.4.16
   - added patch to Berkeley DB to implement better memory use by avoiding
     malloc/memcpy/free cycles by adding the capability to register a callback
     with a DBT (the structure by which memory is returned from Berkeley DB).
     That callback allows much finer control in memory allocation and and in
     memory copies.
   - on Mac OS X, 64 Mb of cache is now used since without it, performance is
     4 times slower than it used to be. Cache now has a positive effect on
     performance (in earlier versions of Berkeley DB, using cache on Mac OS X
     would actually slow the system down). Closing chandler for the first time
     after a repository create may take a few seconds (it didn't used to, I
     have a question open with Sleepycat about that).

Python
------
   - Python is still at version 2.4.2 but the bsddb extension is no longer
     included nor built since it is superceded by the latest chandlerdb code.

PyLucene
--------
   - PyLucene is now at version 1.9rc1 and is built from the latest in the Java
     Lucene SVN tree. A lot of new features and bugs were fixed in the Lucene
     1.9 software tree.
   - PyLucene is also built against Berkeley DB 4.4.16 now

PyICU
-----
   - minor bug fixes

chandlerdb
----------
   - chandlerdb now implements the portions of the Python to C interface to
     Berkeley DB it needs, bypassing Python's bsddb extension.
     Bypassing bsddb makes it safer (better type checking) and simpler for me
     to access Berkeley DB from C and allows me to extract better performance
     from a number of operations by using better memory control (using the
     callback mechanism added to Berkeley DB) and less back and forth between C
     and Python
   - the repository version is now implemented by a Berkeley DB sequence which
     natively handles all the previously self-implemented locking and
     incrementing needed to persistently maintain it
   - the new interface to C Berkeley DB got me to revisit a number of threading
     and concurrency issues that could lead to hard deadlocks. I hope they are
     all fixed.
   - better use of the transaction log file APIs were made and the repository
     now, overall, uses a *lot* less disk space as it used to. Unused log
     files are removed much quicker.

Overall, this branch's focus was performance. Commit performance, in 
particular, is considerably faster. On my Mac, I used to get around 70 items 
pers second committed after importing the good'ol 3000 event calendar, I now 
get up to 127 items per second.
First chandler commit from scratch used to take around 14.5 s on my mac, it 
now takes around 8 s.

Thank your for patience.

Andi..


More information about the Dev mailing list