<!DOCTYPE html><html><head><title></title><style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style></head><body><div style="font-family:Arial;">Since I forgot to send them last week, here's minutes for this week and last week!<br></div><div style="font-family:Arial;"><br></div><div style="font-family:Arial;">Calls happen at 11am UTC (7am US Eastern, 9pm Australian Eastern) on Mondays at:<br></div><div style="font-family:Arial;"><br></div><div style="font-family:Arial;"><a href="https://zoom.us/j/598343302">https://zoom.us/j/598343302</a><br></div><div style="font-family:Arial;"><br></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-htwo ace-ltr ace-line-pocket-custom-collapsable-header-handle focused-line" dir="auto" id="editor-1-ace-line-93"><h2><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>2019-08-26:</span><br></h2></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-3627"><div style="font-family:Arial;"><span>Just Bron and ellie this week!</span><br></div><div style="font-family:Arial;"><span></span><br></div><div style="font-family:Arial;"><span class="ace-line-pocket-zws"></span><span>Bron:</span><br></div><ul><li style="font-family:Arial;"><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>Fastmail
 production hit an fd leak in calalarmd handling of email sending of 
delayed emails - team effort with Ken and various internal ops and 
developers to track down the cause.  Turns out it that the sendmail-pipe
 backend just wasn’t closing the fds, but a couple of memory leaks were 
picked up during the valgrind runs.</span><br></li></ul><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>turns
 out prot_printamap was buggy with zero length strings basically 
forever!  This manifested in cyr_dbtool batch mode occasionally printing </span><span class="inline-code">foo \n</span><span></span><span> rather than </span><span class="inline-code">foo </span><span class="inline-code">""</span><span class="inline-code">\n</span><span></span><span> when the value pointer was to an atom character even though the length was zero.</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-1407"><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>Intermediates remain the gift that keeps on giving.  It turns out that</span><span class="s-ldquo"> </span><span class="h-ldquo">“deleted</span><span> intermediate” </span><span class="inline-code">T di</span><span></span><span> was a thing in the mailboxes.db - it didn’t clean up, it didn't promote
 correctly to a non-deleted intermediate when new children were created,
 and it didn’t appear via JMAP, leading to the children re-parenting up a
 level and being unmovable/undeletable due to the update pointing to the
 wrong place!  They have been nuked entirely.  A deleted folder now 
doesn’t care if it used to be an intermediate, it’s just deleted - and 
hence it cleans up!</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-1824"><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>EmailSubmission/set was missing the onSuccess* actions due to the side effect of only implementing </span><span class="inline-code">create</span><span></span><span> initially, but setting up the framework for the other actions.  When 
they got filled out, the later onSuccess handlers were still incomplete.
  This manifested as a failure of</span><span class="s-ldquo"> </span><span class="h-ldquo">“undo</span><span> send” to move the email back to Drafts and set the $draft flag.</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-2528"><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>A
 crashed server recovery led to the discovery that sync_crc.basic == 0 
and sync_crc.annot == 0 was the default for an empty mailbox, and also 
the signal for</span><span class="s-ldquo"> </span><span class="h-ldquo">“CRCs</span><span> not included in this replication command from an old server, just 
ignore them!”.  This lead to not noticing a message on the replica when 
the master was empty. The fix that remains backwards compatible to 2.x 
is to update the crc_annot code in the new Cyrus to calculate annotation
 CRCs from a base value which isn’t zero</span><span class="s-lparen"> </span><span class="h-lparen">(chose</span><span> 12345678 because it’s in decimal over the wire that that’s really 
obvious!) - hence it’s easy to distinguish empty folder from no data.</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-2973"><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>Now
 that we’re using calalarmd for sending emails 20 seconds after getting 
them, sending up to 10 seconds early is no longer as small a deal as it 
was with calendar alarms!  Now we look up to 10 seconds ahead to see if 
something is coming sooner and run again at the next expected time. 
 This means that something created in the last 10 seconds might take a 
full 10 seconds to run, but otherwise we’ll wake at the time the next 
predicted action has to run.</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-3628"><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>There
 was a locking inversion with the jmapcache for contacts and calendars. 
 It was caching within a read query over the same table.  It now builds a
 hash and caches after the select is finished.  It’s still not 100% 
failure proof because sqlite3 locking is kinda janky around multiple 
writers, so it may need to be protected by a namelock.  We can’t rely on
 conversations.db locking because it’s done during a /get and the nice 
thing about JMAP /get is that it can all run with shared locks and 
read-only mailboxes now since it</span><span class="s-ldquo"> </span><span class="h-ldquo">“never</span><span> writes”.   Opportunistic caching in this context doesn't really count as a write!</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-3773"><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>On another topic… the combined IETF calext / calconnect call will be at 11:00 US Eastern</span><span class="s-lparen"> </span><span class="h-lparen">(aka,</span><span> Philadelphia time where the meeting is) on Wednesday, October 9th.</span><br></li></ul><div style="font-family:Arial;"><span class="ace-line-pocket-zws"></span><span>ellie</span>:<br></div></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z958z80z1v6z78zz65z7mz81zz89zxz73zijz75zgz74zz77zdedctz66zc0z73zz88z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-2401"><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>fixed
 the crazy nxm mailboxes.db hit when counting quotas in promstatsd, 
still more optimisations to experiment with but it’s not completely junk
 anymore</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z958z80z1v6z78zz65z7mz81zz89zxz73zijz75zgz74zz77zdedctz66zc0z73zz88z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-3774"><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>fixed the Metadata.shared cass test to expect the 12345678 default annot crc instead of 0</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-3992"><div style="font-family:Arial;"><br></div><div style="font-family:Arial;"><span>evidence
 collected from git logs and internal slack channels suggest that Ken 
has mostly been working on Snooze support during the past week, when not
 involved in debugging expeditions.</span><br></div></div><div class="ace-line gutter-noauthor ace-ltr" dir="auto" id="editor-1-ace-line-260"><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><br></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-htwo ace-ltr ace-line-pocket-custom-collapsable-header-handle" dir="auto" id="editor-1-ace-line-4"><h2><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>2019-08-19:</span><br></h2></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-5"><div style="font-family:Arial;">Present: ellie, Ken, Bron<br></div><div style="font-family:Arial;"><br></div><div style="font-family:Arial;"><span>Bron:</span><br></div><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>Changed some flags usage in EmailSubmission handling: </span><span class="url"><a class="dynamiclink" href="https://github.com/cyrusimap/cyrus-imapd/pull/2852" rel="noreferrer nofollow noopener">https://github.com/cyrusimap/cyrus-imapd/pull/2852</a></span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-7"><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>Robert may be able to join remotely for CalConnect</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-8"><ul class="listtype-bullet listindent3 list-bullet3"><li dir="ltr"><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>Biggest thing will be JSContact</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-9"><ul class="listtype-bullet listindent3 list-bullet3"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>There should be people from Ribose there, so might be worth it!</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-10"><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>There’s
 a locking problems somewhere in calendar alarms and the Fastmail pusher
 where the pusher connects back via JMAP to fetch the calendar data and 
it triggers an sqldb_exec error saying that the DB is already locked.</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-11"><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>syslog
 error checking - Ken is having issues with it.  Maybe we need to update
 the tests to only check syslog if the config has syslog checks enabled.</span><br></li></ul><div style="font-family:Arial;"><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>Ken:</span><br></div><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>has finally fixed the rebase issues for the uuid-by-mailbox commits.</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-14"><ul class="listtype-bullet listindent3 list-bullet3"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>difficult parts are changes to conversations and annotations</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-15"><ul class="listtype-bullet listindent3 list-bullet3"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>would like to do some more testing, but is close to ready to put on master!</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z95bdutxz67zcz84zz90zz82zsz80zdz87zz80z10z73zz65zz80zz78zwxz71zz83zz69z5oz81z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-16"><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>Discussed what to do with Snooze and how to handle IMAP and Sieve rules.</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z958z80z1v6z78zz65z7mz81zz89zxz73zijz75zgz74zz77zdedctz66zc0z73zz88z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-17"><div style="font-family:Arial;"><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>ellie:</span><br></div><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>updated some virtdomains and sieve docs</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z958z80z1v6z78zz65z7mz81zz89zxz73zijz75zgz74zz77zdedctz66zc0z73zz88z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-19"><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>fixed ipurge mboxevents bug</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z958z80z1v6z78zz65z7mz81zz89zxz73zijz75zgz74zz77zdedctz66zc0z73zz88z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-20"><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>ye olde promstatsd update is back, 2nd time a charm</span><br></li></ul></div><div class="ace-line gutter-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z958z80z1v6z78zz65z7mz81zz89zxz73zijz75zgz74zz77zdedctz66zc0z73zz88z line-list-type-bullet ace-ltr" dir="auto" id="editor-1-ace-line-21"><ul class="listtype-bullet listindent2 list-bullet2"><li><span class="ace-line-pocket-zws"></span><span class="ace-line-pocket-zws"></span><span>fixed a couple of bugs in my mboxlist_find* api change from a few weeks ago</span><span class="s-lparen"> </span><span class="h-lparen">(doh)</span><br></li></ul></div><div style="font-family:Arial;"><br></div><div id="sig56629417"><div class="signature">--<br></div><div class="signature">  Bron Gondwana, CEO, Fastmail Pty Ltd<br></div><div class="signature">  brong@fastmailteam.com<br></div><div class="signature"><br></div></div><div style="font-family:Arial;"><br></div></body></html>