28 Feb 2006 dwmw2   » (Master)

Looks like the Evolution hackers have been smoking some really good crack recently.

In its folder tree, Evolution shows folders with unread messages in bold, with the number of unread messages in brackets after the folder name. A relatively sane and useful thing to do.

Once upon a time, Evolution would check how many new messages there are in each folder by issuing a STATUS command -- a relatively quick transaction which looks something like this:

--> 000 STATUS lists.random.goatsex (UNSEEN MESSAGES)
<-- * STATUS "lists.random.goatsex" (MESSAGES 221 UNSEEN 221)
<-- 000 OK Status completed.

Now, it wasn't particularly clever about this -- it would do this for every folder on the server, even folders which were inactive and which never actually received new mail. And it would do this to the detriment of all else -- ignoring user commands to actually fetch mail to be displayed, change folders, etc. until it had finished doing this check on every mail folder. So if you're on a high-latency link it would appear to go off into the weeds for minutes at a time, failing to display mails which you click on because it's busy doing other things you don't immediately care about.

But now it's worse. Instead of the STATUS command, Evolution now issues a SELECT to actually open each mail folder, then proceeds to fetch the flags for each and every message in the folder and also even the headers of each and every message in the folder, if it doesn't already have those cached. Then it iterates over its list of mails, counting the ones which have the 'unseen' flag set. It comes up with a number, which it uses to display the unseen-count in the folder tree.

I have to offer my congratulations to whoever made this change -- you've turned a three-line IMAP transaction into a multi-megabyte download taking many minutes, for every mail folder on the system. When I started Evolution for the first time after 'upgrading' it, I had to leave it overnight to let it finish starting up and doing this check.

Now put down the crackpipe and back away from the editor...

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!