Henrique de Moraes Holschuh hmh at
Wed Sep 22 11:09:34 EDT 2010

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

More information about the Info-cyrus mailing list