unified murder gets mailboxes list truncated

Janne Peltonen janne.peltonen at helsinki.fi
Sat Jun 30 08:16:30 EDT 2007

On Thu, Jun 28, 2007 at 01:57:57AM +0300, Janne Peltonen wrote:
> I'm running a unified murder and have been experiencing a strange
> problem. I shut down a cluster member cleanly, then start the member
> again, run ctl_cyrusdb -r and ctl_mboxlist -m, all goes well (even if
> the ctl_mboxlist -m takes a long time), the services start - the mupdate
> slaves starts to synchronize with the mupdate master, and, at the
> beginning, throws away all records of remote mailboxes! Only after it
> has synchronized with the master does it know how to proxy to other
> murder members. Now what might be wrong here?

Of course.

It wasn't the mupdate slave that did the truncating.

It was the ctl_mboxlist -m that did it.

Now I wonder. ctl_mboxlist -m truncating the local ("backend") mailboxes
list to contain only local mailboxes makes perfect sense - in a
/traditional/ murder. But mine is a unified murder.

There /is/ the line

mupdate_config: unified

in my imapd.conf. So the ctl_mboxlist -m has all the information it
requires /not to truncate the mailboxes list to contain only local

So what is the preferred way to go about the initial mupdatepush in a
unified murder?

a) skip running the ctl_mboxlist -m at all


b) run ctl_mboxlist -m -a

Option a) might cause the mupdate slave that is started in the services section
of cyrus.conf to delete all local mailboxes from the mailboxes list in
case there is a corrupted mupdate master running. On the other hand,
this is quite a small added risk - if the mupdate master mailboxes list
is ever corrupted while the slaves are running, the slaves will delete
the mailboxes from their lists... This seems to me to be a bit of a bug
in a unified murder: I think that the slaves should refuse to delete
local mailboxes in a unified murder. (Fortunately, the actual mailbox
directories don't seem to get deleted, so the situation can be easily
saved from mailbox list backups.)

Option b) might be more interesting (I haven't tried it out yet). The
man page says that "assume the local mailboxes file is authoritiative,
that is, only change the mupdate server, do  not  delete  any  local
mailboxes.  USE THIS OPTION WITH CARE, as it allows namespace collisions
into the murder" - now I wonder whether the remote mailbox entries will
still be deleted... Well, I'd better try it out next. Reports to follow.

(There is still the option c), that is, run the ctl_mboxlist -m
normally, wait for minutes to hours (depending on disk load) for the
mailboxes list to get truncated, then a similar amount of time for it to
get repopulated with remote mailboxes - now you might see why I'm not
really considering this option.)

(And then there's the option d), that is, somebody changing the
ctl_mboxlist -m behaviour in the unified config. I myself don't have the
time to get this closely acquaintated with Cyrus code; production
deadline is way too close.)

Janne Peltonen <janne.peltonen at helsinki.fi>

More information about the Info-cyrus mailing list