fix: avoid update failure on /opt/sk cwd
This commit is contained in:
@ -82,6 +82,7 @@ By: Codex (GPT-5)
|
||||
| 15.01.2026 | ⚙️ Code | ID: EPIC_000013 System Telemetry Endpoint und UI umgesetzt. By: Codex (GPT-5) |
|
||||
| 15.01.2026 | 📝 Req | ID: EPIC_000009 Update Webservice als erledigt markiert. By: Codex (GPT-5) |
|
||||
| 15.01.2026 | 🚀 Release | ID: VERSION auf 0.2.2 erhoeht. By: Codex (GPT-5) |
|
||||
| 15.01.2026 | 🐞 Fix | ID: BUG_000001 Update-Apply scheitert nicht mehr an WorkingDirectory. By: Codex (GPT-5) |
|
||||
| 15.01.2026 | ⚙️ Code | ID: Makefile restart-Target hinzugefuegt. By: Codex (GPT-5) |
|
||||
|
||||
---
|
||||
|
||||
@ -188,7 +188,11 @@ def _run_async(script_path: Path, settings: Settings) -> None:
|
||||
env["SKD_UPDATE_STATUS_FILE"] = settings.update_status_file
|
||||
env["SKD_UPDATE_LOG_FILE"] = settings.update_log_file
|
||||
subprocess.Popen(
|
||||
[str(script_path)], env=env, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
|
||||
[str(script_path)],
|
||||
env=env,
|
||||
cwd="/",
|
||||
stdout=subprocess.DEVNULL,
|
||||
stderr=subprocess.DEVNULL,
|
||||
)
|
||||
|
||||
|
||||
|
||||
26
project-management/requirements/bugs/BUG_000001.md
Normal file
26
project-management/requirements/bugs/BUG_000001.md
Normal file
@ -0,0 +1,26 @@
|
||||
ID: BUG_000001 | Version: 0.2.2 | Status: Draft
|
||||
By: Codex (GPT-5)
|
||||
|
||||
# BUG_000001: Update scheitert wegen WorkingDirectory /opt/sk
|
||||
|
||||
## Beschreibung
|
||||
Beim Update-Apply bricht `scripts/update_client.sh` ab, wenn `/opt/sk` verschoben wird,
|
||||
weil der Prozess selbst im Verzeichnis arbeitet (WorkingDirectory=/opt/sk).
|
||||
Das fuehrt zu einem Abbruch ohne Abschlussstatus (status bleibt `in_progress`).
|
||||
|
||||
## Schritte zur Reproduktion
|
||||
1. `skd.service` laeuft mit `WorkingDirectory=/opt/sk`.
|
||||
2. Update ueber UI oder `POST /update/apply` starten.
|
||||
3. Script stoppt Service und versucht `mv /opt/sk ...`.
|
||||
4. Fehler wegen busy CWD, Script bricht ab, Service bleibt gestoppt.
|
||||
|
||||
## Erwartetes Verhalten
|
||||
Update-Prozess laeuft aus einem neutralen CWD (z.B. `/`), und Fehler werden als `failed`
|
||||
in Status/Logs vermerkt.
|
||||
|
||||
## Ist-Verhalten
|
||||
Update bleibt im Status `in_progress`, Service bleibt gestoppt.
|
||||
|
||||
## Fix-Idee
|
||||
- `subprocess.Popen(..., cwd="/")` fuer Update-Client.
|
||||
- Fehlertrap in `scripts/update_client.sh` fuer `failed` Status.
|
||||
@ -87,6 +87,14 @@ cleanup() {
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
error_exit() {
|
||||
local msg="${1:-update failed}"
|
||||
SKD_VERSION="${VERSION:-unknown}" SKD_STATUS="failed" SKD_ERROR="${msg}" \
|
||||
SKD_TIMESTAMP="$(date -u '+%Y-%m-%dT%H:%M:%SZ')" SKD_STATUS_FILE="${STATUS_FILE}" \
|
||||
SKD_LOG_FILE="${LOG_FILE}" report_status "failed" "${msg}"
|
||||
}
|
||||
trap 'error_exit "update failed at line ${LINENO}"' ERR
|
||||
|
||||
require_cmd() {
|
||||
if ! command -v "$1" >/dev/null 2>&1; then
|
||||
echo "Required command not found: $1" >&2
|
||||
|
||||
Reference in New Issue
Block a user