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..
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/dev