[PATCH] Sort message UID list

James E. Blair corvus at inaugust.com
Sun Jul 8 17:44:42 BST 2012

On 07/08/2012 08:26 AM, Dave Abrahams wrote:
 > on Sat Jul 07 2012, corvus-AT-gnu.org (James E. Blair) wrote:
 >> Return a sorted list of UIDs in getmessageuidlist.
 > Would you mind explaining what practical difference this change makes
 > for a user of offlineimap?

I generally use two mail clients: GNUS and Thunderbird.  Both of them 
can be configured to show messages in the order received by the IMAP 
server, or, more precisely, in UID order.  This is generally very 
similar to sorting by the Date header, however, it is not prone to being 
fooled by erroneous dates, such as the odd message that has a Date far 
in the past that shows up at the top of the list of messages, or one 
that is 37 years in the future that will keep showing up at the bottom 
of the list for the next 37 years.  Anyway, that's all background for 
why someone might want to sort in UID order.

So how that interacts with offlineimap is that when OI copies messages 
from one IMAP server to another, it iterates over a list of UIDs and 
copies each one in turn.  That list of UIDs is currently unsorted.  OI 
gets a sorted list of UIDs from the source server, but due to the way it 
stores them in memory while working, they become unsorted.  This change 
sorts them again before using them, so the messages being copied should 
be in the same order on both servers.

In practical terms, this has the most impact for a first-time sync on an 
existing large mailbox.  When I did this on a folder with 10,000 
messages, I noticed they were copied over in fairly random chunks, with 
UIDs like: 1,2,3,4,23847,23848,23849,5,6,7,8,... meaning that a sort by 
UID was useless -- at the bottom of the list I'd see messages from 6 
months ago, and just above that, messages from today.

Obviously after an initial sync, the intervals between offlineimap runs 
are going to be smaller, and the order of copying over, say, 5 messages 
isn't going to matter much.  But it's still more correct to copy them in 

The bottom line is: if you don't care about UID order, then this patch 
isn't going to affect you at all.  Copied in random order or UID order, 
your messages will get to the other side.  If you do care about UID 
order, then this patch makes a huge difference -- it's absolutely 
required in order to sort messages correctly.


More information about the OfflineIMAP-project mailing list