Offlineimap 6.3.3-rc1 hangs

Sebastian Spaeth Sebastian at
Mon Mar 28 15:17:36 BST 2011

On Wed, 23 Mar 2011 17:36:26 +0100, Vincent Beffara <vbeffara at> wrote:
[performance regression]

HEUREKA! I am now pretty sure I know what the issue is. This patch
introduces some uidexists(), getmessageuidlist(), and getmessagelist()
calls which internally all use getmessagelist(). This is fine in the
IMAP case, as it is quite performant, but it sucks in the UIDMapped
case. getmessagelist() reconstructs the full dict containing all message
UIDs and flags from scratch everytime it is invoked, which involves lots
of lookups and copying. All this e.g. to test if a certain uid exists.

So I introduced uidexists(), getmessageuidlist() and getmessagecount()
functions that are optimized for the UIDMapped case, overriding the ones
in BaseFolder. This should make uidexists() blazingly fast again.

As a reply to this mail, a 2-patch patch series on top of master. The
first one introduces the optimized functions, the second one converts
some users of getmessagelist() to appropriate helper functions.

Please review, and I am not sure if Nicolas is willing to let this one
slip into the next stable, but from what Vincent says, the performance
degration is currently quite severe in the Gmail|Imap<->Imap case when
you have lots of messages.

These 2 patches should fix the regression.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <>

More information about the OfflineIMAP-project mailing list