From e7517c418536bac752b00606258eebf0edbfe920 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Tue, 23 Jun 2026 20:03:35 +0200 Subject: [PATCH] =?UTF-8?q?test(nomercy):=20Phase=203=20complete=20?= =?UTF-8?q?=E2=80=94=20server=20restart=20PASS;=20F2=20FileBrowser=20bounc?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 3.3 full-server restart (live UI): drives re-bind stable, sys_drive separate (2.5 reboot-survival), all apps recreate-on-boot, registry intact, no placeholders. 3.4 controller-only restart: guest + customer apps keep running BUT FINDING F2 — SyncFileBrowserMounts force-recreates FileBrowser unconditionally (handlers.go:1543), bouncing it on every controller restart vs the "apps keep running" promise. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_017PsnU2ASocYrvzqE82YDYW --- ...stable-path-sysdrive-restart-2026-06-23.md | 44 +++++++++++++++++-- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/documentation/tests/TEST-REPORT-stable-path-sysdrive-restart-2026-06-23.md b/documentation/tests/TEST-REPORT-stable-path-sysdrive-restart-2026-06-23.md index 51fa40f..f1fc757 100644 --- a/documentation/tests/TEST-REPORT-stable-path-sysdrive-restart-2026-06-23.md +++ b/documentation/tests/TEST-REPORT-stable-path-sysdrive-restart-2026-06-23.md @@ -239,9 +239,47 @@ finding (F1). uses. **Pre-existing security note (unrelated to this session):** the demo dashboard being open is the already-documented `controller-dashboard-public-unauth` issue. -### 3.3 — "Kiszolgáló újraindítása" (UI click → guest reboot) — ⏳ executing (operator-authorized) -- Pre-reboot baseline: guest uptime 1:05; containers cloudflared/traefik (14:43), controller (16:52), - filebrowser/navidrome (17:50), radarr (17:55). +### 3.3 — "Kiszolgáló újraindítása" (UI click → guest reboot) — ✅ PASS (live UI, operator-authorized) +- **Method:** claude-in-chrome on `felhom.demo-felhom.eu/settings`; the native `confirm()` was neutralized + (overridden to return true, per browser-safety guidance against blocking dialogs) and the page's own + click handler `restartServer()` was invoked — the full client-side flow (confirm → `fetch + /api/server/reboot` → `pollRestart`). (A ref-coordinate click did not register the handler — UI quirk — + so the handler was invoked directly; same code path.) **Confirms 3.2's `/api/server/reboot` → 202 live.** +- Agent log: `requesting reboot of CT 9201` → task OK → `guest-reboot: guest back up vmid=9201`; guest + uptime reset to 0. On return (controller healthy in **~5 s**): + - **All apps recreated-on-boot:** filebrowser, navidrome (on flash), radarr (on sys_drive), controller, + cloudflared, traefik — all `Up`/healthy. + - **Drives re-bound at STABLE:** flash `sdc1[/felhom-data]`, usb `sdb1[/felhom-data]`. + - **sys_drive still separate:** `pve-vm--9201--disk--2` (→ **2.5 reboot-survival PASS**). + - **No rootfs placeholders** at raw `/mnt/felhom-{flash,usb}` (both "not present"). + - **Registry intact:** both stable paths. Dashboard returned. + - Wrong outcomes (drive at raw/placeholder, sys_drive non-separate, apps don't recreate, registry + mutated) ALL ruled out. + +### 3.4 — "Vezérlő újraindítása" (controller-only restart) — ⚠️ PASS-with-FINDING (live UI) +- **Method:** claude-in-chrome; invoked the page's `restartController()` handler (confirm → `fetch + /api/selfrestart` → `pollRestart`). Controller back healthy in **~3 s**. +- **Guest NOT rebooted** (uptime kept climbing, not reset) ✓. Per-container `StartedAt` before/after: + cloudflared, navidrome, radarr, traefik — **UNCHANGED** (apps kept running) ✓; felhom-controller — + changed (restarted, expected). Drives stayed bound; sys_drive unaffected. +- ⚠️ **FINDING F2 (minor/moderate, pre-existing): the controller-only restart also force-recreates the + FileBrowser container.** `filebrowser` `StartedAt` changed (18:00:34 → 18:01:33); controller startup log: + `[web] FileBrowser mounts synced … config updated`. Root cause: `SyncFileBrowserMounts()` + (`internal/web/handlers.go:1543`) runs `docker compose up -d --force-recreate` **unconditionally** on + every call — the computed `sourcesChanged` flag (`:1504-1506`) only gates the restore-mode DB reset + (`:1529`), **not** the recreate. The controller calls this on startup, so every controller restart (and + every storage sync) bounces FileBrowser even when its config is byte-identical. This contradicts the + button's promise *"Az alkalmazásai futnak tovább; csak a vezérlő indul újra"* — FileBrowser (the + customer's file-access UI) blips for a few seconds on each controller restart. + *Fix direction:* gate the `--force-recreate` on `sourcesChanged` (recreate only when the generated + config/compose actually changed); a no-op sync should leave the running FileBrowser untouched. + New-this-session: surfaced by the new restart button, but the always-recreate behavior is pre-existing + (predates v0.81.0). Not a data-safety issue. + +**Phase 3 verdict:** the retired banner stays gone (3.1), the route is correctly repointed +(`/api/storage/activate`→404, `/api/server/reboot` live 202) (3.2), the full-server restart is the headline +durability win — drives stable, sys_drive separate, apps recreated, registry intact, no placeholders (3.3). +The controller-only restart keeps the guest + customer apps running but **does bounce FileBrowser** (F2). ## Phase 4 — host reboot + chaos — ⏳ PENDING