recurring alarms disappear from indicator (but not clock-app) after first kick
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
indicator-datetime (Ubuntu) |
Invalid
|
Undecided
|
Charles Kerr | ||
qtorganizer5-eds (Ubuntu) |
Fix Released
|
Undecided
|
Renato Araujo Oliveira Filho | ||
ubuntu-clock-app (Ubuntu) |
Invalid
|
Undecided
|
Unassigned |
Bug Description
I'm not sure yet what's causing this, but the symptom is for ~/.local/
> RRULE;X-
> BYDAY=MO,
> SUMMARY:Weekday wakeup
When is should look more like this:
> RRULE:FREQ=
Alarms appear / trigger again after manually editing tasks.ics to remove the invalid X-EVOLUTION-ENDDATE and COUNT values, then restarting evolution-
ENDDATE's clearly coming from a (time_t)0. Not sure about 32639, but it's INT16_MAX - 128, so we've got that.
Edit: this doesn't appear to be the full story -- if I create a brand new recurring alarm it works correctly even though the epoch ENDDDATE is present. For me they disappeared later, after a few days had passed and the system had been rebooted dozens of times. I'll see if I can reproduce the bug and, if so, how to reproduce it.
Related branches
- PS Jenkins bot: Needs Fixing (continuous-integration)
- Charles Kerr (community): Approve
-
Diff: 116 lines (+94/-1)2 files modifiedorganizer/qorganizer-eds-engine.cpp (+1/-1)
tests/unittest/recurrence-test.cpp (+93/-0)
Changed in qtorganizer5-eds (Ubuntu): | |
assignee: | nobody → Renato Araujo Oliveira Filho (renatofilho) |
description: | updated |
summary: |
- clock-app alarms' RRULE have unusual X-EVOLUTION-ENDDATE, causing alarms - to not sound + recurring alarms disappear from indicator (but not clock-app) after + first kick |
Changed in qtorganizer5-eds (Ubuntu): | |
status: | New → In Progress |
Changed in indicator-datetime (Ubuntu): | |
status: | New → Invalid |
Changed in ubuntu-clock-app (Ubuntu): | |
status: | New → Invalid |
"X-EVOLUTION- ENDDATE" is set only in one place, evolution- data-server/ calendar/ libecal/ e-cal-recur. c's function , e_cal_recur_ set_rule_ end_date( ), which is only called in this block:
> /* Calculate the end date. Note that we initialize end_date to 0, so generate_ instances_ of_rule ( ensure_ rule_end_ date_cb, get_utc_ timezone ()); ENDDATE" parameter of the set_rule_ end_date (prop, cb_data.end_date);
> * if the RULE doesn't generate COUNT instances we save a time_t of 0.
> * Also note that we use the UTC timezone as the default timezone.
> * In get_end_date () if the DTSTART is a DATE or floating time, we will
> * convert the ENDDATE to the current timezone. */
> cb_data.count = rule.count;
> cb_data.instances = 0;
> cb_data.end_date = 0;
> e_cal_recur_
> comp, prop, -1, -1,
> e_cal_recur_
> &cb_data, tz_cb, tz_cb_data,
> icaltimezone_
>
> /* Store the end date in the "X-EVOLUTION-
> * rule. */
> e_cal_recur_
It looks like somehow e_cal_recur_ generate_ instances_ of_rule( ) here generated no instances so that end_date became the epoch.