The issue with calendar alarms
Nicola Nye
nicola at fastmailteam.com
Mon Jan 1 18:37:42 EST 2018
That was a nice bug!
In the event of a failover, is there human intervention required to
adjust sync mode so the old replica/new master now knows it's the boss?
Tell me about your documentation plans!
On Thu, Dec 28, 2017, at 3:02 PM, Bron Gondwana wrote:
> Calendar alarms and replication are a real problem for the
> following reason:>
> 1) calalarmd needs to only run on the master, not the replica -
> otherwise the alarm will fire on both, and the alarmd on the
> replica will write annotations, causing split brain issues.>
> 2) the caldav_alarms.sqlite3 database on the replica needs to have all
> the nextalarm values in sync with the master, so if there's a
> failover event, the calalarmd on the ex-replica knows which records
> are interesting without having to parse every single mailbox!>
> 3) replication and annotations is a disaster - the record gets written
> first, and the annotations later.>
> So we solve this as follows:
>
> a) if record.silent is set, we don't write the caldav_alarms.sqlite3
> event line for the record immediately.>
> b) AFTER we have applied both the record and any annotations for the
> record in sync_support.c, we call caldav_alarm_touch_record(),
> which can then read the annotation to see when the nextalarm
> should be.>
> The problem is this: if there's already a nextalarm value, and we
> change a record to have an earlier alarm for whatever reason, the
> alarm annotation just gets copied by dav_store_resource to the new
> record, and hence there's already a nextalarm in the future. This
> OVERWRITES the earlier alarm value created by
> caldav_alarm_new_record().>
> The fix is this: instead of blindly overwriting,
> caldav_alarm_touch_record needs to have two modes: sync mode and non-
> sync mode.>
> In sync mode, it's a replica - so it just does what it does now -
> blindly writes the value from the annotation.>
> In non-sync mode, it instead always reads the record (plus any per-
> user overrides) and finds the time that it next needs to be checked.>
> Easy-peasy :) I might even just call it two different things to make
> it extra clear what's going on!>
> Bron.
>
> --
> Bron Gondwana, CEO, FastMail Pty Ltd
> brong at fastmailteam.com
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.andrew.cmu.edu/pipermail/cyrus-devel/attachments/20180102/43a2e3d6/attachment.html>
More information about the Cyrus-devel
mailing list