replication is unable to fix uidvalidity difference

Bron Gondwana brong at
Mon Sep 3 18:04:53 EDT 2007

On Mon, Sep 03, 2007 at 07:18:06PM +1000, Bron Gondwana wrote:
> On Mon, 3 Sep 2007 10:07:36 +0100 (BST), "David Carter" <dpc22 at> said:
> > On Mon, 3 Sep 2007, Bron Gondwana wrote:
> > > Reading the sync_client protocol, I notice that do_mailbox_single
> > > doesn't actually send the uidvalidity as part of the local mailbox
> > > status from the server, so it can't even tell there's a difference.
> > 
> > Oops, yes. I think that this can only happen if the UIDvalidity changes 
> > while the UniqueID remains the same, which means reconstruct on a mailbox 
> > which is missing cyrus.header.
> My reading was a reconstruct without cyrus.index.  If you reconstruct
> without a header it will get a new UniqueID, but if you reconstruct without
> an index it doesn't know the UidValidity, so it sets it time().
> But yeah, in a site as big as us, anything that can go wrong will at some
> point!

Honestly, now that I know what's causing it (an oversight in the sync
protocol rather than some underlying bug) I'm not concerned any more.
It's easily detected and checkreplication with the -x flag (blat the
replica mailbox and sync_client -u if there are errors) will fix it.


More information about the Cyrus-devel mailing list