round52: Fehler im Sammel-Scan werden jetzt in der UI angezeigt und persistent geloggt statt verschluckt

This commit is contained in:
2026-07-26 11:29:21 +02:00
parent 8dd3115353
commit 2bc5d9550c
2 changed files with 42 additions and 3 deletions

View File

@@ -370,8 +370,20 @@ export async function scanRoutes(app: FastifyInstance): Promise<void> {
allStale.push(...result.staleServices);
allNameChanges.push(...result.nameChanges);
allNew.push(...result.newServices);
} catch {
// einzelnes fehlgeschlagenes Gerät soll den Rest nicht abbrechen
} catch (err) {
// Einzelnes fehlgeschlagenes Gerät soll den Rest nicht
// abbrechen - ABER trotzdem persistent loggen, statt
// stillschweigend zu überspringen. Vorher war das ein
// stummer catch-Block: scheiterte ausgerechnet immer
// dasselbe Gerät (z. B. wegen eines kaputten Hostnamens),
// gab es dafür nie einen sichtbaren Hinweis.
const detail = err instanceof Error ? err.message : String(err);
logRepo.logScan({
type: "device",
targetId: device.id,
level: "error",
message: `${device.hostname} (${device.ip}): Scan im Sammel-Lauf fehlgeschlagen ${detail}`,
});
} finally {
unlockDevice(device.id);
}
@@ -392,7 +404,20 @@ export async function scanRoutes(app: FastifyInstance): Promise<void> {
newServices: allNew,
});
} catch (err) {
failJob("devices", err instanceof Error ? err.message : "Unbekannter Fehler");
// WICHTIG: Vorher wurde ein Abbruch des GESAMTEN Sammel-Scans nur im
// In-Memory-Jobstatus (lastError) vermerkt, nie in der persistenten
// scan_logs-Tabelle - Admin -> Logs blieb dadurch leer, obwohl der
// Scan sichtbar fehlgeschlagen war (Badge in der Seitenleiste
// verschwindet, weil running=false wird, aber ohne jede Erklärung
// warum). Jetzt zusätzlich persistent geloggt.
const detail = err instanceof Error ? err.message : String(err);
logRepo.logScan({
type: "device",
targetId: null,
level: "error",
message: `Sammel-Scan abgebrochen ${detail}`,
});
failJob("devices", detail);
}
})();