On Wed, 22 Sep 2010, Bron Gondwana wrote: > Now - BDB database SHOULD be upgradable. I want to find a BDB expert > to help me with that - (a) detecting that an upgrade is necessary, and > (b) doing the upgrade. All I know is that there used to be an API call to upgrade the db environment, which basically did exactly what the db_upgrade utility does. It was easy to find before Oracle bought SleepyCat and screwed over with the documentation, nowadays I don't even know where the API docs are. If it is still exists, you could probably upgrade all DBs the first time they're accessed (if the db->upgrade() call is cheap enough when there is no work to be done, something I don't know). > So the only thing really left to do is making sure we can upgrade > BDB databases automatically. Sure downgrades will suck, but that's > not quite so scary. Downgrades can only be done manually anyway, by dump+restore. However, the file formats don't change as much as the API/ABI anyway, often two different BDB releases use the same file format. > .... given the issues with BDB. Is it worth embedding a copy of > BDB into the Cyrus distribution rather than using the OS one? I That way lies madness. BDB is one of those things where arcane blackmagic skills are needed to keep it working on all arches. It uses scary crap to be fast and archive high performance with large concurrency, and I've seen it break OpenLDAP in very nasty arch-specific ways in the past (OpenLDAP is to BDB what Cyrus is to mmap() ;-) ). And it will break the world if you get symbol versioning wrong. Lots of libraries (SASL *and* glibc included!) might decide to shadow-dynamic-link BDB with your application, and all sort of non-funny crap can happen if the wrong linker magic is applied. You *really* don't want to go there. -- "One disk to rule them all, One disk to find them. One disk to bring them all and in the darkness grind them. In the Land of Redmond where the shadows lie." -- The Silicon Valley Tarot Henrique Holschuh ---- Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/