nach Upgrade bekommt Aufgaben nicht das korrekte Signal zurück #203

Open
opened 2026-06-29 21:21:43 +00:00 by chinux · 1 comment
Owner

image

![image](/attachments/d6a6f45f-9de3-452c-93c0-0b8febd90bbc)
Author
Owner

Ursache gefunden + gefixt (commit 489934c). Issue bleibt offen bis am echten Host verifiziert.

Bug: Der Done-Marker __THEPROX_HOST_UPDATE_DONE_RC=<rc> fehlte IMMER im Log (auch ohne Reboot) → der Backend-Poller _drive_host_update_task bekommt nie einen exit_code → Task hängt ewig auf „läuft".

Ursache: Der detachte Upgrade-Prozess lief per setsid in eigener Session, aber weiterhin in der systemd-cgroup von theprox-agent.service. Ein dist-upgrade triggert needrestart, das Dienste mit veralteten Libs neu startet — u.a. theprox-agent. Beim Service-Restart killt systemd die ganze cgroup → apt + das abschließende echo SENTINEL sterben, bevor der Marker geschrieben wird. setsid entkommt der cgroup nicht.

Fix: host_update.rs start() startet das Upgrade jetzt via systemd-run --scope --collect in einer eigenen transient-Scope-cgroup unter system.slice (außerhalb des Agent-Service). Die überlebt den Agent-Restart → apt läuft fertig → Sentinel wird geschrieben → Task schließt korrekt mit rc ab. Fallback auf direktes bash, falls systemd-run fehlt. Agent 2.18.0 → 2.19.0, Binary (x86_64-musl) neu gebaut + committed.

Deploy: Node-Agent ausrollen (Self-Update oder Re-Install), dann ein Host-Update auf einem Testhost prüfen — Marker muss im Log erscheinen und der Task mit rc=0 abschließen.

Ursache gefunden + gefixt (commit `489934c`). Issue bleibt offen bis am echten Host verifiziert. **Bug:** Der Done-Marker `__THEPROX_HOST_UPDATE_DONE_RC=<rc>` fehlte IMMER im Log (auch ohne Reboot) → der Backend-Poller `_drive_host_update_task` bekommt nie einen `exit_code` → Task hängt ewig auf „läuft". **Ursache:** Der detachte Upgrade-Prozess lief per `setsid` in eigener Session, aber weiterhin in der systemd-cgroup von `theprox-agent.service`. Ein `dist-upgrade` triggert **needrestart**, das Dienste mit veralteten Libs neu startet — u.a. `theprox-agent`. Beim Service-Restart killt systemd die **ganze cgroup** → apt + das abschließende `echo SENTINEL` sterben, bevor der Marker geschrieben wird. `setsid` entkommt der cgroup nicht. **Fix:** [host_update.rs](Node-Agent/src/host_update.rs) `start()` startet das Upgrade jetzt via `systemd-run --scope --collect` in einer eigenen transient-Scope-cgroup unter system.slice (außerhalb des Agent-Service). Die überlebt den Agent-Restart → apt läuft fertig → Sentinel wird geschrieben → Task schließt korrekt mit rc ab. Fallback auf direktes bash, falls `systemd-run` fehlt. Agent 2.18.0 → 2.19.0, Binary (x86_64-musl) neu gebaut + committed. **Deploy:** Node-Agent ausrollen (Self-Update oder Re-Install), dann ein Host-Update auf einem Testhost prüfen — Marker muss im Log erscheinen und der Task mit rc=0 abschließen.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
chinux/theProx#203
No description provided.