Dozen calendar notifications for each repeating event

REPRODUCIBILITY (% or how often): 90%+ of the time
BUILD ID = OS VERSION (Settings > About product): 3.4.0.24
HARDWARE (Jolla1, Tablet, XA2,…): Sony XA2 Ultra
UI LANGUAGE: English
REGRESSION: (compared to previous public release: Yes, No, ?): ?

DESCRIPTION:

I get about a dozen notifications for every repeating calendar event (i.e. yearly, weekly, etc). There are no duplicate events.
When I dismiss the notification an new one pops up repeatedly, over and over. There is nothing I can do to stop it, except for keep dismissing them until they are done.

PRECONDITIONS:

Doesn’t matter if screen is locked or not. Reminders are duplicated almost a dozen times each
Synced google event or locally created events

STEPS TO REPRODUCE:

  1. Create/Sync repeating calendar event that repeats yearly, monthly, weekly, etc.
  2. Event has notification
  3. Notification happens almost endlessly. After dismissal

EXPECTED RESULT:

1 notification per event

ACTUAL RESULT:

Annoying, endless notifications for the same event

ADDITIONAL INFORMATION:

none

Looks like a duplicate of this one:

Could you follow the instructions I gave as a reply to the above thread ? This may help to understand what is wrong.

I @dcaliste. Thanks for your help.

There are multiple listings for the same calendar alarm.
I see the same items listed numerous times.

Here’s an example of one that nagged me recently

Cookie 1627
APPLICATION = ‘libextendedkcal’
PLUGIN = ‘libCalendarReminder’
TITLE = ‘Mihai’s Birthday’
alarmtime = ‘2021-06-17T00:00:00’
endDate = ‘2021-06-18T00:00:00’
notebook = ‘674e0571-ae0e-4e80-b4a3-c912f164fd88’
recurs = ‘true’
startDate = ‘2021-06-18T00:00:00’
time = ‘2021-06-18T00:00:00’
type = ‘event’
uid = ‘672e01be-b50c-49ca-96af-dae553741832’
Tick: 1623877200 (T-19212634 @ 2021-06-17 00:00:00 EEST)
Time: 0000-00-00 00:00
MaximalTimeoutSnoozeCounter: 2
TimeoutSnoozeLenght: 1
Flags: userMode alignedSnooze reminder
Action0:
COMMAND = ‘invoker --type=generic -n /usr/bin/mkcaltool --reset-alarms 674e0571-ae0e-4e80-b4a3-c912f164fd88 672e01be-b50c-49ca-96af-dae553741832’
Flags: runCommand whenServed
Cookie 1676
APPLICATION = ‘libextendedkcal’
PLUGIN = ‘libCalendarReminder’
TITLE = ‘Mihai’s Birthday’
alarmtime = ‘2021-06-17T00:00:00’
endDate = ‘2021-06-18T00:00:00’
notebook = ‘674e0571-ae0e-4e80-b4a3-c912f164fd88’
recurs = ‘true’
startDate = ‘2021-06-18T00:00:00’
time = ‘2021-06-18T00:00:00’
type = ‘event’
uid = ‘7bf3a5f1-52ec-4679-807c-bb2ff083e47d’
Tick: 1623877200 (T-19212634 @ 2021-06-17 00:00:00 EEST)
Time: 0000-00-00 00:00
MaximalTimeoutSnoozeCounter: 2
TimeoutSnoozeLenght: 1
Flags: userMode alignedSnooze reminder
Action0:
COMMAND = ‘invoker --type=generic -n /usr/bin/mkcaltool --reset-alarms 674e0571-ae0e-4e80-b4a3-c912f164fd88 7bf3a5f1-52ec-4679-807c-bb2ff083e47d’
Flags: runCommand whenServed
Cookie 1706
APPLICATION = ‘libextendedkcal’
PLUGIN = ‘libCalendarReminder’
TITLE = ‘Mihai’s Birthday’
alarmtime = ‘2021-06-17T00:00:00’
endDate = ‘2021-06-18T00:00:00’
notebook = ‘674e0571-ae0e-4e80-b4a3-c912f164fd88’
recurs = ‘true’
startDate = ‘2021-06-18T00:00:00’
time = ‘2021-06-18T00:00:00’
type = ‘event’
uid = ‘5b81d467-aec1-4aee-b405-704201348cee’
Tick: 1623877200 (T-19212634 @ 2021-06-17 00:00:00 EEST)
Time: 0000-00-00 00:00
MaximalTimeoutSnoozeCounter: 2
TimeoutSnoozeLenght: 1
Flags: userMode alignedSnooze reminder
Action0:
COMMAND = ‘invoker --type=generic -n /usr/bin/mkcaltool --reset-alarms 674e0571-ae0e-4e80-b4a3-c912f164fd88 5b81d467-aec1-4aee-b405-704201348cee’
Flags: runCommand whenServed
Cookie 1726
APPLICATION = ‘libextendedkcal’
PLUGIN = ‘libCalendarReminder’
TITLE = ‘Mihai’s Birthday’
alarmtime = ‘2021-06-17T00:00:00’
endDate = ‘2021-06-18T00:00:00’
notebook = ‘674e0571-ae0e-4e80-b4a3-c912f164fd88’
recurs = ‘true’
startDate = ‘2021-06-18T00:00:00’
time = ‘2021-06-18T00:00:00’
type = ‘event’
uid = ‘d989dfb9-6926-44a2-9907-82ac580bf340’
Tick: 1623877200 (T-19212634 @ 2021-06-17 00:00:00 EEST)
Time: 0000-00-00 00:00
MaximalTimeoutSnoozeCounter: 2
TimeoutSnoozeLenght: 1
Flags: userMode alignedSnooze reminder
Action0:
COMMAND = ‘invoker --type=generic -n /usr/bin/mkcaltool --reset-alarms 674e0571-ae0e-4e80-b4a3-c912f164fd88 d989dfb9-6926-44a2-9907-82ac580bf340’
Flags: runCommand whenServed
Cookie 1762
APPLICATION = ‘libextendedkcal’
PLUGIN = ‘libCalendarReminder’
TITLE = ‘Mihai’s Birthday’
alarmtime = ‘2021-06-17T00:00:00’
endDate = ‘2021-06-18T00:00:00’
notebook = ‘24e256b1-7fb4-4663-8c7e-10b84205fb1a’
recurs = ‘true’
startDate = ‘2021-06-18T00:00:00’
time = ‘2021-06-18T00:00:00’
type = ‘event’
uid = ‘3fc3e947-5507-4afe-9ece-124607214eed’
Tick: 1623877200 (T-19212634 @ 2021-06-17 00:00:00 EEST)
Time: 0000-00-00 00:00
MaximalTimeoutSnoozeCounter: 2
TimeoutSnoozeLenght: 1
Flags: userMode alignedSnooze reminder
Action0:
COMMAND = ‘invoker --type=generic -n /usr/bin/mkcaltool --reset-alarms 24e256b1-7fb4-4663-8c7e-10b84205fb1a 3fc3e947-5507-4afe-9ece-124607214eed’
Flags: runCommand whenServed
Cookie 1841
APPLICATION = ‘libextendedkcal’
PLUGIN = ‘libCalendarReminder’
TITLE = ‘Mihai’s Birthday’
alarmtime = ‘2021-11-06T00:00:00’
endDate = ‘2021-11-07T00:00:00’
notebook = ‘24e256b1-7fb4-4663-8c7e-10b84205fb1a’
recurs = ‘true’
startDate = ‘2021-11-07T00:00:00’
time = ‘2021-11-07T00:00:00’
type = ‘event’
uid = ‘e587e8b8-b603-463e-a5fb-196bf96037ac’
Tick: 1636149600 (T-31485034 @ 2021-11-06 00:00:00 EET)
Time: 0000-00-00 00:00
MaximalTimeoutSnoozeCounter: 2
TimeoutSnoozeLenght: 1
Flags: userMode alignedSnooze reminder
Action0:
COMMAND = ‘invoker --type=generic -n /usr/bin/mkcaltool --reset-alarms 24e256b1-7fb4-4663-8c7e-10b84205fb1a e587e8b8-b603-463e-a5fb-196bf96037ac’
Flags: runCommand whenServed

Thanks for the list. The first thing that I’m acknowledge about when I see the list is: they are alarms for different events (not the same uid) of the same notebook (same notebook string). So fine, the repetition of alarm does not come from a duplication of the same notebook.

Looking better, all these different events (in storage I mean) seem to be about the same “real” event (the birthday). A new question to go further: to which kind of account these events are refering to ? Is it a Nextcloud calendar, or the built-in birthday calendar ?

In any case, to you see duplicated events if you look at the 2021-11-06 date ? Two possibilities:

  • nop, in that case these alarms refers to deleted events (for whatever sync reason these events may have been deleted and recreated by a sync process). In that case, the issue may reside in mKCal project in src/extendedcalendar.cpp where an alarm is supposed to be deleted whenever an event is deleted.
  • yes they are duplicated, in that case, the alarms are not to be blamed. But the account is to. If it’s a Nextcloud or CalDAV account, I need sync log to go further and understand why these events get duplicated. If it’s the birthday calendar, I need to look into the contactsd plugin dealing with birthdays.
2 Likes

There are no duplicated events in the calendar.
There was a bug in previous Sailfish versions where the events got duplicated 2x, 3x or more… I cleared all calendars and resynced with the last update.

I no longer get duplicate events, but I do get the duplicate notifications.

IS there a way to flush/rebuild notifications? or completely clear out the calendars?

All events are synced from Google Calendar (Birthday Calendar is disabled, it’s just by coincidence that I isolated that recurring yearly event that I used as an example when i was going through the log for this thread)

May I ask how you clean up all calendars ? Did you remove the account in the setting page or did you remove the database by hand ?

There are options in the timed-client to delete alarms, but one by one, I’m afraid.

In theory, if the notebook id 24e256b1-7fb4-4663-8c7e-10b84205fb1a is still associated to an account, deleting the account should remove all associated alarms. If you look at the calendars table in .local/share/system/privileged/Calendar/mkcal/db SQlite database, you may see to which account id it is associated to. Then, the account listing is stored in .config/libaccount-glib/account.db.

I deleted the cal db using instructions from another thread (topic of duplicate events in calendar)
What’s the best way to reset the calendars completely?
Delete the accounts? what files should I delete?
(What should I use to view the .db files?)

UPDATE: I disabled all calendars and alarms have been deleted. There are no events in my calendar, however… timedclient-qt5 -L still lists a bunch of stale events

I’m afraid they correspond to events of a calendar that has been deleted by hand. Did you deleted the calendar with SQlite commands ? If so, the best would be in my opinion to create again this calendar with SQlite commands , then make this calendar invisible in the manage calendar pulley in the calendar app.

If you don’t feel confident , I can set up on Monday a step by step procedure .

In case your duplicated alarms belong to the same notebook (see notebook key for each alarm reported by timed-client), and this notebook does not exist anymore in the mKCal database, you can follow these steps to get rid of them:

  • devel-su -p to get privileged rights on calendar database.
  • cd $HOME/.local/share/system/privileged/Calendar/mkcal/ to go to the databse directory.
  • sqlite3 db to edit the database.
  • insert into calendars (CalendarId, name, description, flags) values ("24e256b1-7fb4-4663-8c7e-10b84205fb1a", "remove me", "I've no account", 128); to create a new calendar with the notebook id that is used to store the repeating alarms (I got it from your log, but the id may be different).
  • exit to leave the sqlite editor.
  • touch db.changed to notify a change of the database.
  • open the calendar application and use the pulley menu to open the “manage calendars” page.
  • there should be a “remove me” calendar, uncheck it and leave the page. It will toggle off its visibility asking timed to delete all alarms matching the notebook id.
  • sqlite3 db again to remove this fictious calendar.
  • delete from calendars where calendarid == "24e256b1-7fb4-4663-8c7e-10b84205fb1a"; to actually delete it.
  • exit to leave the sqlite editor again.

This will remove all alarms associated to notebook “24e256b1-7fb4-4663-8c7e-10b84205fb1a”. You need to have the sqlite3 executable installed, it is in the sqlite package.

2 Likes

Wow. Thank you.
That worked!