Systemd timer with WakeSystem=true not counting down when system is suspended

I created the transient systemd timer with the command:

systemd-run --collect --unit=alarm-clock --on-active="1h" --timer-property=WakeSystem=true flatpak run io.bassi.Amberol /home/user/Music/test.flac

However despite WakeSystem=true the timer does not count down when the system is suspended. systemctl list-timers --all shows the timer still having almost 1h left.

Transient timer file content
# This is a transient unit file, created programmatically via the systemd API. Do not edit.
Description=/usr/bin/flatpak run io.bassi.Amberol /home/user/Music/test.flac


Any idea on how to debug this?

The command also didn’t run after timer elapsed on a waking system… but at least it counted down.
Solved this. The combination of Wayland app and system unit is bad [1] [2]. Newer systemd version will allow WakeSystem with --user.
Though I don’t know why systemd wouldn’t just ask for sudo password instead of failing when certain operations require privilege. (So that I could specify --user and also set wake system.)

The clocks work as expected when queried with Python (suspended 40s in below).

>>> time.clock_gettime(time.CLOCK_MONOTONIC)
>>> time.clock_gettime(time.CLOCK_BOOTTIME)

Turns out it works as expected with shorter duration. Not sure if the problem was a fluke, will test again.

Tested again, it seems the computer woke up after 1h as expected, but then waited another 1h to execute the command. I didn’t see the whole process, so I’m still not sure.
I also found a similar problem online.

Nope, same problem on shorter duration as well, the timer doesn’t actually count down until wake, shorter duration just makes the wait shorter.

The dev closed it as non-issue. EDIT: reopened.
Can anyone point out what is incorrect here?
Or have I not gone through the right channel? Should I file a bug report on Fedora Bugzilla instead?

Self reminder of posts to close: 1 2 3 4

Closing this as I found the reason, fixing though is beyond me.
Waking from suspend triggers time change, which triggers systemd to rebase timer’s elapse time on the current boot time clock, skipping the suspend time.