Re: [Imap-protocol] Re: Suspend/Restore feature proposal

Bron Gondwana <[email protected]>
Newsgroups gmane.mail.imap.general
Message-ID <1354010952.13681.140661158661065.2086C60B@webmail.messagingengine.com>
On Tue, Nov 27, 2012, at 12:30 AM, Brandon Long wrote:
> On Mon, Nov 26, 2012 at 2:57 PM, Michael M Slusarz <[email protected]>wrote:
> > What I get out of this is that you think QRESYNC was the result of an
> > incorrect design decision and, instead,  the proposal you previously linked
> > to in this thread should have won out.
> 
> I wasn't on the list at that time, so I have no idea what the debate looked
> like.  I view them as different, however.  QRESYNC requires little extra
> storage and can be persisted for any length of time.  I find it odd that it
> mentions "mobile, frequently disconnected" as its still a fairly extensive
> negotiation between client and server.  Its certainly a win for any client
> when re-connecting, regardless of how long ago that was, and fills a hole
> in the CONDSTORE case.  So no, I don't think QRESYNC is an incorrect design
> decision.  Its possible a "not imap" protocol could conceive of a better
> way, in syntax or otherwise, of passing the needed information to re-sync
> the client and server, but QRESYNC has to fit the task given it.

The interesting part for QRESYNC is remembering "tombstones" for EXPUNGED
messages for a while to keep it cheap.

I like QRESYNC a lot more now that I've implemented the Cyrus 2.4+ replication
protocol on top of it.  It basically uses the same logic, but with full
information required to replicate the exact mailbox state at the far end.  It
means fast and cheap resync.

I'm really tempted to try to write it up as a more general protocol for
synchronising IMAP message stores from any vendor.  There's some capabilities
you need which can't be expressed over regular IMAP - for example appending
with a specific new UID rather than the next available.

I also wrote up a long thing to the Cyrus mailing list many years ago about
"UID Promotion" - basically if the two ends had ever had different messages
with the same UID, you need to give new UIDs to BOTH messages which are
higher than any ever seen by any client - generating an EXPUNGE and two
APPEND events at each end - to come entirely back into sync.

If anyone else is interested, I can write up something about how Cyrus
implements QRESYNC now, such that it can clean up old records, yet still
be efficient for clients most of the time.

Bron.

-- 
  Bron Gondwana
  [email protected]

_______________________________________________
Imap-protocol mailing list
[email protected]
http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.