Hi, I might have find a bug in shepherd timers. I have a timer scheduled to run every 24 hours, the definition is as follow:
--8<---------------cut here---------------start------------->8--- (define %kerberos-log-in-refresh-service (let ((name 'kerberos-log-in-refresh)) (simple-service name home-shepherd-service-type (list (shepherd-service (documentation "Refresh the kerberos ticket.") (provision (list name)) (requirement '(kerberos-reachable?)) (start #~(make-timer-constructor (calendar-event #:hours '(12) #:minutes '(0)) (command (list #$%kerberos-log-in)))) (stop #~(make-timer-destructor)) (modules (cons '(shepherd service timer) %default-modules)) (actions (list (shepherd-action (name 'trigger) (documentation "Immediately refresh the ticket.") (procedure #~trigger-timer))))))))) --8<---------------cut here---------------end--------------->8--- This should run every 24 hours (at noon) and execute the %kerberos-log-in script (simple guile program that authenticates against kerberos). However that did not happen. Here are the logs: --8<---------------cut here---------------start------------->8--- 2025-02-22 19:17:00 Service kerberos-log-in running with value #<<process> id: 730 command: ("/gnu/store/8m21cnqnllk6g1kcgyj91i5h05s7c0c4-krb-log-in")>. 2025-02-22 19:17:00 [8m21cnqnllk6g1kcgyj91i5h05s7c0c4-krb-log-in] <redacted> 2025-02-22 19:17:00 [8m21cnqnllk6g1kcgyj91i5h05s7c0c4-krb-log-in] <redacted> 2025-02-22 19:17:00 [8m21cnqnllk6g1kcgyj91i5h05s7c0c4-krb-log-in] <redacted> 2025-02-22 19:17:00 [8m21cnqnllk6g1kcgyj91i5h05s7c0c4-krb-log-in] <redacted> 2025-02-23 12:00:02 Waiting anew for timer 'kerberos-log-in-refresh' (resuming from sleep state?). 2025-02-23 22:00:01 Not rotating '/home/<redacted>/.local/state/shepherd/dbus.log', which is below the 8192 B threshold. --8<---------------cut here---------------end--------------->8--- The ones from 19:17:00 are from 'kerberos-log-in service, which is one-shot executed upon login. That went fine. However the 'kerberos-log-in-refresh is only at 12:00:02, and only as "Waiting anew ...". The message indicates that the computer might be resuming from sleep, however that was not the case here. It is a desktop machine, and it was left running over night. Here is herd status: --8<---------------cut here---------------start------------->8--- $ herd status kerberos-log-in-refresh ● Status of kerberos-log-in-refresh: It is running since Sat 22 Feb 2025 07:17:00 PM CET (28 hours ago). Timed service. Periodically running: /gnu/store/8m21cnqnllk6g1kcgyj91i5h05s7c0c4-krb-log-in It is enabled. Provides: kerberos-log-in-refresh Requires: kerberos-reachable? Custom action: trigger Will be respawned. Upcoming timer alarms: Mon 24 Feb 2025 12:00:00 PM CET (in 13 hours) Tue 25 Feb 2025 12:00:00 PM CET (in 37 hours) Wed 26 Feb 2025 12:00:00 PM CET (in 3 days) Thu 27 Feb 2025 12:00:00 PM CET (in 4 days) Fri 28 Feb 2025 12:00:00 PM CET (in 5 days) --8<---------------cut here---------------end--------------->8--- Have a nice day, Tomas -- There are only two hard things in Computer Science: cache invalidation, naming things and off-by-one errors.
signature.asc
Description: PGP signature