FastMail.FM Patchset Updated

Bron Gondwana brong at fastmail.fm
Tue Nov 20 22:44:39 EST 2007


As usual you can get the patches here:

http://cyrus.brong.fastmail.fm/


I've been busy with Cyrus _again_ - so much for my theory
that I was taking a break.

OK - here's what's new.

* http://cyrus.brong.fastmail.fm/patches/cyrus-skiplist-bugfixes-2.3.10.diff
  http://cyrus.brong.fastmail.fm/patches/cyrus-skiplist-robustify-2.3.10.diff

  Skiplist issues - there were two things that could be found
  in recovery that actually bit us during the whole "restart
  every single store with the new skiplist code" project the
  other day.  ADD where the record already existed and DELETE
  where it didn't.  The later also had an obnoxious bug where
  it would instead delete _the_alphabetically_NEXT_record_
  silently.  Ooops.

  I rolled these two into my bugfix and robustify patches, not
  realising Ken had already applied the previous copies upstream.
  Ken - do you want me to break this out as a separate patch on
  top of the others?

* http://cyrus.brong.fastmail.fm/patches/cyrus-sync-renamedmailbox-2.3.10.diff

  DelayedDelete of entire users was causing excess copying.
  This fixes it, but the solution is less than ideal and causes
  excess messages about folders not existing during an account
  create.  Annoying.  I'd like a better fix, but this is enough
  for now.  Found this one after fixing...

* http://cyrus.brong.fastmail.fm/patches/cyrus-deletemode-userfix-2.3.10.diff

  This is for upstream.  I made a bogus design decision in the 
  DelayedDelete code that Ken accepted, and it was causing
  bailouts and all sorts of yuckyness.  Made the conditions for
  allowing a folder rename into the DELETED. namespace a lot more
  explicit and correct rather than DELETED.user.foo.TIMESTAMP
  being considered a user's mailbox!  The user cleanup script
  no longer causes massive bailouts on sync.

* http://cyrus.brong.fastmail.fm/patches/cyrus-expunged-nocache-2.3.10.diff

  A little thing to shut up the issue that used to cause segfaults 
  and now just causes logging instead.  Cache offsets in the .expunge
  file can be bogus for deeper architectural reasons.  Rather than
  fix the underlying reasons I just ignore them completely when
  running cyr_expire.  At least that way we're not reading bogus
  cache records.

* http://cyrus.brong.fastmail.fm/patches/cyrus-fastrename-2.3.9.diff

  UPDATED.  It turns out it really doesn't matter what YOU can see
  when you're checking if you can use FastRename.  It matters if
  there are subfolders at all.  Change to passing isadmin true
  and not passing the username to mboxlist_count_inferiors().
  Also need to check if the target path has inferiors to avoid
  log messages and partial move failures that have to back out.
  Much nicer this way.  This means fastrename on replicas isn't
  totally broken any more (before, it would never see the subfolders
  because the replication user didn't have ACLs on them and isadmin
  was being set to false explicitly)


Ken - I'd love to see the deletemode-userfix and skiplist stuff
go upstream.  I know you're not happy with fastrename yet, and
fair enough - it's an extra risk and if a shutdown happens in 
the middle of the operation things can get very confused!  The
other two patches are not really long-term good for the Cyrus
codebase so I'd prefer to fix the underlying issues instead :)

Bron.


More information about the Info-cyrus mailing list