From: Austin Clements Date: Thu, 23 Oct 2014 12:30:37 +0000 (-0400) Subject: lib: Implement ghost-based thread linking X-Git-Tag: 0.19_rc1~35 X-Git-Url: https://git.notmuchmail.org/git?a=commitdiff_plain;h=58a4277d3b2ad88bc285f2dae998626b0aa73299;hp=58a4277d3b2ad88bc285f2dae998626b0aa73299;p=notmuch lib: Implement ghost-based thread linking This updates the thread linking code to use ghost messages instead of user metadata to link messages into threads. In contrast with the old approach, this is actually correct. Previously, thread merging updated only the thread IDs of message documents, not thread IDs stored in user metadata. As originally diagnosed by Mark Walters [1] and as demonstrated by the broken T260-thread-order test, this can cause notmuch to fail to link messages even though they're in the same thread. In principle the old approach could have been fixed by updating the user metadata thread IDs as well, but these are not indexed and hence this would have required a full scan of all stored thread IDs. Ghost messages solve this problem naturally by reusing the exact same thread ID and message ID representation and indexing as regular messages. Furthermore, thanks to this greater symmetry, ghost messages are also algorithmically simpler. We continue to support the old user metadata format, so this patch can't delete any code, but when we do remove support for the old format, several functions can simply be deleted. [1] id:8738h7kv2q.fsf@qmul.ac.uk ---