Cyrus Future status update

Ken Murchison murch at andrew.cmu.edu
Tue Jul 6 21:11:12 EDT 2010


Bron,

What is broken in nntpd?  I don't know who is using it, but I will 
certainly fix it.


Bron Gondwana wrote:
> So - I haven't pushed anything more to CVS for a bit!  That's because I
> wanted to refactor some more list logic out of sync_support.c and into its
> own function where it can be used by mbdump and friends as well.
> 
> 1) Refactoring and Sync Protocol
> 2) QRESYNC and ImapTest
> 3) Still TODO
> 
> ------------------------
> 
> 1) Refactoring and Sync Protocol
> 
> I've created dlist.c and dlist.h - which is a "dumplist" format.  The spec
> looks something like this:
> 
> * Atoms just like IMAP
> * Literals just like IMAP
> * Lists just like IMAP - starts with '(', ends with ')'
> * New type: KEY-VALUE list - starts with '%(' ends with ')'.
> * New type: message-file literal: %{partition GUID $n}\r\n\<$n bytes>
> 
> The top level of a command is always a KEY-VALUE pair, with the value
> often being another KEY-VALUE list.  So a brand new user with a single
> test message in their mailbox might cause sync traffic like this:
> 
> NOTE: all sync traffic that's not support stuff (login, compress, etc) is
> done via two commands. "GET" which queries the server, and "APPLY" which
> makes changes.  Also, the opposites are "UN<command>", so RESET became
> UNUSER.
> 
> APPLY MESSAGE reserves the message in that partition on the server - so all
> update traffic includes the full record, and copies the file into place if
> needed.
> 
> Everything is named - there's no positional magic.
> 
> And of course there's SYNC_CRC.  I'll document that somewhere too :)
> 
> <1278460344<GET USER foo
>> 1278460344>NO IMAP_MAILBOX_NONEXISTENT No Such Mailbox
> <1278460344<APPLY UNUSER foo
>> 1278460344>OK success
> <1278460344<APPLY MESSAGE (%{default 196922b6d822b618c665874fb523b9058a0adb56 92}
> From: test <test at example.com>
> To: test <test at example.com>
> 
> Some stuff in the body...
> .
> )
>> 1278460344>OK success
> <1278460344<APPLY MAILBOX %(UNIQUEID 74b8ef164c33c1b8 MBOXNAME user.foo LAST_UID 1 HIGHESTMODSEQ 1 RECENTUID 0 RECENTTIME 0 LAST_APPENDDATE 1278460344 POP3_LAST_LOGIN 0 UIDVALIDITY 1278460344 PARTITION default ACL "foo      lrswipkxtecda   admin   lrswipkxtecd    " TYPE NORMAL OPTIONS P SYNC_CRC 123100176 RECORD (
>   %(UID 1 MODSEQ 1 LAST_UPDATED 1278460344 FLAGS (\Flagged) INTERNALDATE 1268029091 SIZE 92 GUID 196922b6d822b618c665874fb523b9058a0adb56)))
>> 1278460345>OK success
> 
> ------------------------
> 
> 2) QRESYNC and ImapTest
> 
> I've been working with ImapTest from the Dovecot project to check that the
> index.c model is correct.
> 
> http://www.imapwiki.org/ImapTest
> 
> Since last night, I finally ironed out the last reporting bug (I hope) and
> ImapTest says that it's working correctly, both with and without QRESYNC.
> I've even got support for match_seq and match_uid to index_vanished! (though
> I don't think ImapTest uses them...)
> 
> ------------------------
> 
> 3) Still TODO
> 
> * A working EXPUNGE_IMMEDIATE codepath.
> * mbdump and restore with the dlist protocol
> * nntpd - I don't think it's actually working at all!  I'd love to hear from
>   someone who uses it and is willing to help test it.
> * tidying up the number of duplicate utilities.
> * a seen_cleanup script to remove the seendb entries for mailboxes which
>   have been upgraded to the user-internal-seen format.  I'm not making it
>   part of the inital upgrade because that would mean you lose seen data if
>   you decide to undo the upgrade and reconstruct with an earlier cyrus!
> * reconstruct - create a non-invasive mode, and think more about how to
>   handle reconstruct without exclusive locking, and reconstruct that will
>   be replication safe.  Lots to think about here...
> 
> ------------------------
> 
> Still, this is up and running on one testing store at FastMail now - including
> one of my users.  So my email is working on top of it :)  The locking system
> is really very good now - I'm proud of it.  Actual guaranteed consistency with
> the view on clients even under heavy load.
> 
> I'll keep pushing stuff upstream as I'm happy that it's fairly stable.  As
> always, you can see my latest code at http://github.com/brong/cyrus-imapd/
> 
> Regards,
> 
> Bron.
> 

-- 
Kenneth Murchison
Systems Programmer
Carnegie Mellon University


More information about the Cyrus-devel mailing list