On Tue, 29 Apr 2008, Timo Sirainen wrote:
I'll probably be implementing multi-master replication this summer. My
previous thoughts about it are here:
http://dovecot.org/list/dovecot/2007-December/027284.html
Below is a description of how the replication protocol will probably
work. It should work just as well for master-slave and multi-master
setups. Comments welcome. I'll write later a separate mail about how
it'll be implemented to Dovecot.
(I'm CC:ing tv since he and I once chatted about IMAP replication.)
Multi-master will be very interesting. I'm really curious what you will
do as far as this scenario:
1. A mail arrives in server1
2. User reads it (therefore the mail has a UID assigned)
3. server2 gets isolated from server1
4. A mail arrives at server2
5. User logs in to server2 and reads it (therefore the mail has a UID
assigned)
6. server2 and server1 are connected again, and are told to sync
Questions:
a. Does the client get told two different messages have the same UID in
the folder?
b. What is the graceful sync proposal?
Oh, look - you mention that right at the end of your protocol:
A special case is when two servers have been saving messages
independently from each others. In this case it's possible that the
servers have used the same UIDs for different messages (different global
UIDs). These need to be resolved by giving both conflicting UIDs new
unused UIDs, otherwise IMAP clients may show them as wrong messages from
their caches.
FIXME: If the other server had expunged a conflicting UID it still
should be given a new UID. How do we find out this has happened?
I guess this doesn't address my Question (a), though.
The above scenario may be handled by your root-based election process -
but what prevents two roots from simultaneously existing, and therefore
two masters existing, and then the above scenario happening?
I'm really interested to see where this goes - I think this would be
really swell as a replacement for my use of offlineimap. I also want to
have you consider letting non-root users use Dovecot replication features;
that way, I could just have a cron job that asks my laptop's Dovecot to
replicate from my server's Dovecot, without giving it any special
permissions.
Thanks for all the great work Dovecot represents!
-- Asheesh.
--
I joined scientology at a garage sale!!