Seen databases
Bron Gondwana
brong at fastmail.fm
Thu Apr 29 06:25:25 EDT 2010
On Thu, Apr 29, 2010 at 04:26:38PM +1000, Robert Mueller wrote:
> > Besides, they only matter within the non-user folders now.
>
> Yeah, but just because most of our folders aren't shared, doesn't mean
> that there aren't environments out there where most folders *are*
> shared. Want to make sure we're not doing something that'll be obviously
> dangerous in other types of uses.
True - though one big DB isn't inherently more dangerous than individual
small DBs (assuming your DB engine isn't as broken as skiplist used to
be)
Even in a massively shared environment I suspect it would be on a similar
order of size to mailboxes.db. Sure you could generate a pathological
case if you really wanted to...
> > More interesting is the potential for clashes during replication,
> > which would generate a rename event across users. That could get
> > super-ugly!
>
> Oooo, user renames will be a bit ugly!
It wouldn't even be a user rename, it would be a rename user.a.foo
to user.b.bar. Should be pretty unlikely though because sync will
bail out if it discovers multiple folders with the same uniqueid
within a session. At least - it will by the time I've finished
fiddling with it, if it doesn't already :)
> > But it's not a high risk - the adhoc uniqueid is a hash of the
> > folder name concatenated with the uidvalidity, so you'd have to have
> > a hash collision and creation at the same second. Restore from
> > backup after a rename is the disaster case. The best way to protect
> > against that is to move the cyrus.header data into a central DB and
> > scan it for matches before creating an entry. Either key an "index"
> > db against the uniqueid directly, or just do a full table scan. The
> > IMAP "LIST" command already does a full table scan, so it can't be
> > TOO expensive :)
>
> Do you really want another db? And "restore from backup after rename"
> has to be incredibly rare case, it's not worth worrying about.
I'd like a central register of uniqueids - even if it's just in
mailboxes.db. Mind you, I'd like to stick UserFlags in a DB as
well and do away with the cyrus.header file completely :) Be
interestingly messy that would. I'm not doing it for 2.4.0,
that's for sure!
Bron.
More information about the Cyrus-devel
mailing list