You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Clone from Rocky Linux to Debian fails on grub-boot-success.timer #8232
Use a cluster with a Rocky Linux 9 node and a Debian 13 node
Install any rootless app on the Rocky node, for example Roundcube
Clone or move it to the Debian node
Expected behavior
The clone completes.
Actual behavior
The clone fails at the last step, even though the app on the Debian node is up and running:
action "clone-module" status is "aborted" (123) at step 90finalize
Failed to enable unit: Unit grub-boot-success.timer does not exist
On Rocky, the grub2-tools package enables grub-boot-success.timer for every user, so each app's timers.target lists it. Roundcube has no timer of its own, yet:
transfer-state/10sendpayload saves this list as is. On the target, clone-module/90finalize runs xargs systemctl --user enable on it under set -e. Debian has no such timer, so the step stops with exit code 123. It never shipped one: the grub2 package of Debian 11, 12 and 13 has no grub-boot-success unit, so any Debian target is affected.
A possible fix: only save the timers the app enabled itself, or skip units that do not exist on the target.
Debian to Rocky works, and restore is not affected.
On Rocky, grub2-tools enables grub-boot-success.timer for every user, so every app sees it. The clone copied this timer to the target, and Debian has no such unit, so 90finalize failed. With the fix, the clone only copies the units the app enabled itself.
Setup: one Rocky 9 node and one Debian 13 node, with core 3.24.1-dev.3 on both.
Show the source of the bug. Install and configure Roundcube on Rocky, then run: runagent -m roundcubemail1 systemctl --user show timers.target -p Wants --value
The output contains grub-boot-success.timer, even though Roundcube has no timer of its own.
Clone to Debian. Clone Roundcube to the Debian node. Before the fix, this failed at 90finalize with Unit grub-boot-success.timer does not exist. Now the task completes and the app runs on Debian.
Check that app units are still cloned. The fix changes how the list of enabled units is built, so the app's own units must still reach the clone. On the source and on the clone, run: runagent -m <roundcube> sh -c 'ls $AGENT_INSTALL_DIR/systemd/user/default.target.wants'
Both list agent.service and roundcubemail.service.
Move back to Rocky. Move the Debian instance to Rocky. Move uses the same code. The task completes and the units match.
Clone Rocky to Rocky. Clone Roundcube on the same Rocky node. The task completes, the units match and both instances run.
Activity
fix(transfer-state): send only enabled units (#1359)
stephdl commentedon Oct 26, 2026
QA
On Rocky,
grub2-toolsenablesgrub-boot-success.timerfor every user, so every app sees it. The clone copied this timer to the target, and Debian has no such unit, so90finalizefailed. With the fix, the clone only copies the units the app enabled itself.Setup: one Rocky 9 node and one Debian 13 node, with core
3.24.1-dev.3on both.Show the source of the bug. Install and configure Roundcube on Rocky, then run:
runagent -m roundcubemail1 systemctl --user show timers.target -p Wants --valueThe output contains
grub-boot-success.timer, even though Roundcube has no timer of its own.Clone to Debian. Clone Roundcube to the Debian node. Before the fix, this failed at
90finalizewithUnit grub-boot-success.timer does not exist. Now the task completes and the app runs on Debian.Check that app units are still cloned. The fix changes how the list of enabled units is built, so the app's own units must still reach the clone. On the source and on the clone, run:
runagent -m <roundcube> sh -c 'ls $AGENT_INSTALL_DIR/systemd/user/default.target.wants'Both list
agent.serviceandroundcubemail.service.Move back to Rocky. Move the Debian instance to Rocky. Move uses the same code. The task completes and the units match.
Clone Rocky to Rocky. Clone Roundcube on the same Rocky node. The task completes, the units match and both instances run.