[Bug ?] Kalender-Aktualisierung nicht sofort

Hallo,
diese Woche habe ich einen meiner Kalender für die Heizung geändert: ich habe im Grunde alle Ereignisse gelöscht.
Die Synchronisation in Gladys hat nicht funktioniert, keine Änderungen.
Ich habe die Synchronisation erzwungen, aber immer noch keine Änderungen.
Ich habe es laufen lassen, aber nichts weiter.
Und heute Morgen habe ich die Freigabe dieses Kalenders entfernt (nur für den Fall), ich habe die Konfiguration neu gespeichert und eine Synchronisation gestartet, und die Ereignisse sind verschwunden.

Kann es ein Problem mit den sich wiederholenden Ereignissen oder einer Synchronisation geben, die nicht (mehr) automatisch funktioniert?

Ich habe meine Verfügbarkeitsprotokolle zur Analyse bereit, falls nötig.

Hallo @mutmut, danke für das Feedback.

Ich würde die Logs gerne an Claude weitergeben, damit er alles analysieren kann :slight_smile:

Vielen Dank @mutmut für den Hinweis und die Logs, sie haben geholfen, einen echten Bug zu finden :folded_hands:

Was passiert ist

Deine Logs zeigen, dass die CalDAV-Synchronisation alle 30 Minuten lief, ohne etwas anzuwenden:

09:31:33  CalDAV : Found calendar Chauffage
09:31:33  CalDAV : Found 4 calendars.

…und nichts anderes für 17 Stunden am Stück. Keine Fehler, aber auch keine Änderungen.

Deine Intuition zu wiederkehrenden Ereignissen war richtig. In Gladys wird ein wiederkehrendes Ereignis als eine Zeile pro Vorkommen gespeichert (dein Kalender Chauffage enthält 575). Wenn der CalDAV-Server jedoch die Löschung eines Ereignisses meldete, löschte Gladys es nur, wenn es genau ein passendes Vorkommen fand. Bei einem wiederkehrenden Ereignis gab es jedoch Hunderte, sodass die Bedingung nie erfüllt war und nichts gelöscht wurde. Da dieser Fall keine Logzeile erzeugte, schien die Synchronisation überhaupt nicht mehr zu laufen.

Zwei verschlimmernde Probleme wurden dabei gefunden:

  1. Gladys markierte den Kalender als „auf dem neuesten Stand“ bevor die Änderungen tatsächlich angewendet wurden. Nach einem gescheiterten Löschvorgang gingen diese Änderungen also endgültig verloren, und die folgenden Synchronisationen forderten sie nie wieder an. Genau deshalb änderte das erzwungene Synchronisieren nichts: Nur ein vollständiger Reimport (was das Sichern der Konfiguration tut) konnte das lösen, und du hattest den richtigen Workaround gefunden.
  2. Wenn eine Wiederholungsregel verkürzt wurde oder ein Vorkommen entfernt wurde, blieben die alten Vorkommen unendlich lange in der Datenbank.

Was behoben wurde

  • Alle Vorkommen eines gelöschten wiederkehrenden Ereignisses werden nun korrekt gelöscht.
  • Der ctag / Sync-Token wird erst gespeichert, nachdem die Änderungen angewendet wurden: Keine Kalender mehr, die nach einem Fehler endgültig blockiert sind.
  • Vorkommen, die auf dem Server nicht mehr existieren, werden bereinigt.
  • Kalender werden jetzt beim Start des Dienstes synchronisiert, anstatt 30 Minuten zu warten (sichtbar in deinen Logs: Dienst gestartet um 09:01:33, erste Synchronisation um 09:31:33).
  • Die Logs zeigen nun auch die Anzahl der gelöschten Ereignisse an, damit solche Probleme sichtbar sind.

Der Fix ist hier: https://github.com/GladysAssistant/Gladys/pull/2712

Anmerkung: Die CalDAV-Synchronisation basiert weiterhin auf einem Refresh alle 30 Minuten, sie kann also nicht im strengsten Sinne instantan sein. Aber eine Änderung sollte jetzt bei der nächsten Synchronisation berücksichtigt werden, ohne jemals blockiert zu bleiben.

Der Fix ist live in Gladys Assistant 4.84