diff options
| author | Craig Jennings <c@cjennings.net> | 2026-07-24 17:57:54 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-07-24 17:57:54 -0500 |
| commit | 1a704ba233523abb29f6ab7f52dfecd702a9bdd8 (patch) | |
| tree | 70c73989350e8d22f09e61a45843ea0337c2eaf9 /modules | |
| parent | 0989858ed1182c978d1f40a1fab6850e46ff5d06 (diff) | |
| download | dotemacs-1a704ba233523abb29f6ab7f52dfecd702a9bdd8.tar.gz dotemacs-1a704ba233523abb29f6ab7f52dfecd702a9bdd8.zip | |
- The sync timer body ran unguarded from an hourly run-at-time timer.
- A signal in the timezone check or the sync fan-out errored every tick.
- The same error, once an hour, indefinitely.
- Wrapped the body in condition-case; an error is logged, not propagated.
- Also demoted the timezone-change message to the silent log, like the
module's other timer-path notices — an hourly timer shouldn't spam the echo area.
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/calendar-sync.el | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/modules/calendar-sync.el b/modules/calendar-sync.el index 804d71fa..d504f246 100644 --- a/modules/calendar-sync.el +++ b/modules/calendar-sync.el @@ -300,16 +300,28 @@ When called non-interactively with nil, syncs all calendars." ;;; Timer management (defun calendar-sync--sync-timer-function () - "Function called by sync timer. -Checks for timezone changes and triggers re-sync if detected." - (when (calendar-sync--timezone-changed-p) - (let ((old-tz (calendar-sync--format-timezone-offset - calendar-sync--last-timezone-offset)) - (new-tz (calendar-sync--format-timezone-offset - (calendar-sync--current-timezone-offset)))) - (message "calendar-sync: Timezone change detected (%s → %s), re-syncing..." - old-tz new-tz))) - (calendar-sync--sync-all-calendars)) + "Function called by the hourly sync timer. +Checks for timezone changes and triggers re-sync if detected. + +The body is wrapped so a signal — from the timezone check or the sync +fan-out — is caught and logged rather than propagated: this runs from a +`run-at-time' timer, and an unguarded error would repeat on every tick, +once an hour, indefinitely. The timezone-change notice goes to the silent +log, not the echo area, since an hourly timer must not spam `message'." + (condition-case err + (progn + (when (calendar-sync--timezone-changed-p) + (let ((old-tz (calendar-sync--format-timezone-offset + calendar-sync--last-timezone-offset)) + (new-tz (calendar-sync--format-timezone-offset + (calendar-sync--current-timezone-offset)))) + (calendar-sync--log-silently + "calendar-sync: Timezone change detected (%s → %s), re-syncing..." + old-tz new-tz))) + (calendar-sync--sync-all-calendars)) + (error + (calendar-sync--log-silently + "calendar-sync: sync timer error: %s" (error-message-string err))))) ;;;###autoload (defun calendar-sync-start () |
