[Bug 140443] dimap mail loss on kmail crash and troubleshoot / rebuild / refresh imap cache

Jani-Matti Hätinen jani-matti.hatinen at iki.fi
Fri Aug 15 15:09:05 BST 2008


------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=140443         




------- Additional Comments From jani-matti.hatinen iki fi  2008-08-15 16:09 -------
The easiest way to fix this is to reimplement dimap with journaling. Along with the local message cache there's also a local transaction cache. As with the message cache, each item in the transaction cahce is stored in a separate file (to minimise the possible effects of corruption).

Whenever the user does something to a message locally (mark read, mark unread, mark important, move, copy, etc.), the action is stored in the transaction cache as well as the message state in the local message cache.

When syncing to the server the items in the local transaction cache are reviewed one by one. If syncing to server is successful, the item in the transaction cache is marked as done. If syncing to server fails because the server state differs from the local state (message has already been removed, marked read, marked important, etc.), the item is marked as failed and ignored in further syncs. If syncing fails for any other reason (timeout, server down, etc.), the item is left in the transaction cache as open.

Only when/if the local transaction cache is empty, the state between local message cache and server message store is compared and all differences are synced _from_ the server _to_ the client.

For error situations the GUI can provide options for cleaning and/or reviewing the local transaction cache (in case particular transactions cause consistent errors).

I'm not sure how close the current implementation is from the one I described, but from what I understand the above design shouldn't require too much refactoring.



More information about the Kdepim-bugs mailing list