On Sat, Feb 01, 2003 at 11:31:13AM -0500, Rob Siemborski wrote: > On Fri, 31 Jan 2003, Phil Howard wrote: > > > | Of course replicating some things such as seen state will be quite > > | painful, and you may need to do some hacks to keep uids unique between > > | the machines. > > > > How does Cyrus manage uids? I hope these are not uids in /etc/passwd. > > No, they're the unique identifier numbers for each message. I believe the > problem John was asking about is, what happens if you have, say, an APPEND > happen to a mailbox on both servers while they are not in communication > with eachother. > > When they resync, each has a new message with the same unique identifier, > but different contents. This isn't a situation that can be recoverd from > just be looking at the contents of the filesystem. > > Doing replicated IMAP stores (espeically geographicly distanct ones) is > not an easy problem.
All this sounds remarkably similar to the postgres-r database replication problem cf nice paper by Bettina Kemme http://www.cs.mcgill.ca/~kemme/papers/vldb00.html Here it would be client connects to imap server A and says "APPEND". Server A then sends "APPEND" to server A and server B using a group communciation protocol (cf spread) which guarantees the ordering of the commands. Server A and server B then receive the APPEND and do it. If server B received an APPEND at nearly the same time, that APPEND would still appear in the same place in the input queue of both servers => the UID would come out the same. You still have the hard problem of conflict resolution after network partitioning :( Just 2 uninformed cents, Patrick