[Imap-protocol] Optimistic incremental THREAD=REFERENCES
Timo Sirainen
tss at iki.fi
Fri May 9 14:52:30 PDT 2008
On May 10, 2008, at 12:06 AM, Arnt Gulbrandsen wrote:
> I wrote code do to the same thing, and found another corner case. If
> one or more early message(s) is/are deleted from the mailbox, then
> it can be (and very seldom is) the case that a thread is split.
>
> Consider this four-message thread:
> 1 is the start.
> 2 has an In-Reply-To pointing to 1.
> 3 has an In-Reply-To pointing to 1
> 4 has an IRT pointing to 2
>
> If you thread this incrementally, you learn that this is one thread.
>
> If messages 1 and 2 are deleted and another message arrives
> 5 has an IRT pointing to 3
> then your incremental algorithm may still have enough information to
> tie messages 3, 4 and 5 together in one thread. A non-incremental
> T=R doesn't have that information, and will make two threads.
A quick test shows that my algorithm handles this, probably because of
the refcounting rules. I'll look at it more closely later to make sure
that it does.
> The subject-joining rule magnifies this. Personally I didn't
> imnplement the subject-joining bit.
Me neither. That generates more complexity and I'd rather drop the
subject merging completely (my X-REFERENCES2 threading algorithm does
that).
BTW. This reminds me of your INTHREAD draft with THREAD=REFS. I guess
by "THREAD=REFS ignores Date" you mean that you don't care in which
order the threads are returned? Or are they returned sorted by
INTERNALDATE? Or sequences? Anyway I don't think you should drop the
In-Reply-To header handling. That makes it difficult to use the same
persistent thread information for both THREAD=REFERENCES and
THREAD=REFS.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 201 bytes
Desc: This is a digitally signed message part
Url : http://mailman1.u.washington.edu/pipermail/imap-protocol/attachments/20080509/edf53d38/PGP.bin
More information about the Imap-protocol
mailing list