[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: LC results for draft-melnikov-imap-expunged and how to move forward
On Tue Sep 26 00:52:45 2006, Ken Murchison wrote:
Randall Gellens wrote:
I admit to still being confused, since based on side discussions I
thought the server didn't need to store any state but would just
report to the client which messages in the set no longer exist.
This was my understanding as well, based on a private discussion
with Alexey prior to hacking up an implementation for Cyrus.
Your understanding on -01 is perfectly correct.
-00, however, required some kind of tombstone record, effectively
linking each EXPUNGE event with a MODSEQ. (Or each EXPUNGEd message
with a MODSEQ, if you prefer to look at things that way).
Alexey is suggesting - I think - that the client has some means of
saying "I want to know what messages have been EXPUNGEd since X
within UID set A", and the server can respond with one of the
following:
a) "Here's a set of UIDs which have been EXPUNGEd since X".
b) "Sorry, I can't remember, you'll have to figure it out another
way".
c) "I don't know, but here's a list of all UIDs in set A which do not
exist".
Now, the current state of affairs is that the server always responds
with (c). In -00, the server always responded with (a) [I think]. The
ACAP method [DELETEDSINCE if you care to look it up] went for (a)
with a fallback to (b).
Alexey's suggestion is (a) with a fallback to (c), since whichever
way it works, the client always has the resynch within one RTT.
I firmly believe we do need some fallback from (a). I agree it's
entirely unreasonable to expect a server to maintain significant
extra state. By providing a fallback, we can allow server
implementors to turn the retention of the state into a QOI issue.
However, I'm not sure what the fallback should be - (b) uses less
bandwidth, but - potentially - more round-trips. (c) uses more
bandwidth - potentially much more bandwidth - but uses no additional
round-trips.
So it's a trade-off, and it might even be worthwhile to have this as
a client-driven option. Certainly I'd really like to hear other
client developers' view on this. Myself, I'm undecided between an
option and (b). (c) has high costs for large, sparse mailboxes - to
give a real-world example, the ESEARCH response for "UID SEARCH
RETURN (ALL) 1:*" on my personal INBOX is 24k, or 9.5k when gzipped.
By comparison, I've used 12.95k of download so far this morning
(after compression).
That said, for compact mailboxes, irregardless of size, its very
small.
Dave.
--
Dave Cridland - mailto:dave@xxxxxxxxxxxx - xmpp:dwd@xxxxxxxxxx
- acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/
- http://dave.cridland.net/
Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade