We currently use the cyrus replication system to move users between servers. This works really nicely.

We have code that creates a temporary cyrus.conf file with the appropriate contents that allows us to do a single sync_client -u to copy everything about a user from one server to another.

However we recently discovered a problem. If that user has a shared seen state, it doesn't work because the shared seen state is stored in the special "anyone" seen file. Of course, we can't just add "sync_client -u anyone", because that would replace the entire shared seen state file on the target server with the one from the source server, we only want the records for shared folders to be copied.

Net result is that the replication system is a great way to move users safely from one server to another, *except* for users with shared seen state. Really annoying.

Possible options:

1. When you sync a mailbox, sync_client checks the anyone seen file for a corresponding mailbox uniqueid record and syncs that 2. Rather than using the skiplist seen state, shared mailbox seen state is actually stored as a bit per message in the cyrus.index file (like the old seen state was) 3. Actually, it would be nice if user seen state + shared seen state (really 99.9% of cases) was stored as 2 separate bits in the cyrus.index, and only seen state for other user was in skiplist files.

Discuss?

Rob

Reply via email to