[Imap-protocol] SELECT/EXAMINE clarification of UNSEEN

Bron Gondwana brong at fastmail.fm
Wed Nov 16 06:35:38 PST 2011

On Wednesday, November 16, 2011 2:38 PM, "Timo Sirainen" <tss at iki.fi> wrote:

> Sounds like you're talking about your specific implementation, since I can't really think of why any of the above would be a problem or why there would be any need of blocking. I've actually thought of a way to create zero-lock-waits IMAP-compliant mailbox format on POSIX filesystems that do atomic writes with O_APPEND (practically all apparently), so I'm sure any blockers can be worked around.

Teah - allowing gappyness certainly offers some nice properties.

But, I don't see how you can allow reads to see the messages until they are fully committed and indexed and "durable" for whatever level of guarantee you require. And because of that, I don't see how you can allow writes without ordering
enforcement of "this commit is guaranteed to complete".


* session A starts a write, gets GUID 101
* session B starts a write, gets GUID 102
* session B completes the write and return GUID 102 to its caller.

Suddenly session B is living in a world where 102 exists but 101 doesn't yet.

So you can't allow session B to return until session A is committed, or if you
do - you can't allow it to READ anything (or any client which has a shared idea
of the mailbox state from session B for that matter) - or it will get an
inconsistent read.

Bron Gondwana
brong at fastmail.fm

More information about the Imap-protocol mailing list