fix(diagnostic): Nach Bridge-Neustart nicht mehr ohne Netz haengen bleiben
Die Diagnostic teilt das Netz der Bridge. Startet die Bridge neu (Liveness- Self-Kill bei RVS-Ausfall), blieb der alte Namensraum zurueck: nur lo, Port 3001 tot, Container trotzdem "Up". Fehlt das Netz dreimal in Folge, beendet sich die Diagnostic jetzt, und Docker startet sie im aktuellen Netz neu. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -17,6 +17,7 @@ const { WebSocket, WebSocketServer } = require("ws");
|
||||
const crypto = require("crypto");
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
const os = require("os");
|
||||
const vpn = require("./vpn");
|
||||
|
||||
// ── Konfiguration ───────────────────────────────────────
|
||||
@@ -2630,6 +2631,33 @@ setInterval(checkDiskSpace, 30000);
|
||||
// Watchdog entfernt — war auf aria-core/OpenClaw zugeschnitten (doctor --fix,
|
||||
// docker restart aria-core). Der Brain-Loop bekommt seinen eigenen Health-Check.
|
||||
|
||||
// ── Netz-Waechter ───────────────────────────────────────
|
||||
// Die Diagnostic teilt das Netz der Bridge (network_mode: service:bridge).
|
||||
// Startet die Bridge neu (z.B. Liveness-Self-Kill bei RVS-Ausfall), bleibt hier
|
||||
// der alte Namensraum zurueck: nur noch lo, Port 3001 tot, der Container gilt
|
||||
// aber weiter als "Up". Dann beenden wir uns; restart: unless-stopped startet
|
||||
// uns neu, und Docker haengt uns ins aktuelle Netz der Bridge.
|
||||
const NETZ_CHECK_MS = parseInt(process.env.DIAG_NETZ_CHECK_MS || "10000", 10);
|
||||
const NETZ_MAX_FEHLT = 3; // mehrmals in Folge, damit die Bridge Zeit zum Hochkommen hat
|
||||
function hatNetz() {
|
||||
return Object.values(os.networkInterfaces()).flat().some((a) => !a.internal);
|
||||
}
|
||||
let netzGesehen = false; // ohne je Netz gehabt zu haben kein Beenden (z.B. lokal ohne Docker)
|
||||
let netzFehlt = 0;
|
||||
setInterval(() => {
|
||||
if (hatNetz()) {
|
||||
netzGesehen = true;
|
||||
netzFehlt = 0;
|
||||
return;
|
||||
}
|
||||
if (!netzGesehen) return;
|
||||
netzFehlt++;
|
||||
if (netzFehlt >= NETZ_MAX_FEHLT) {
|
||||
log("error", "server", "Netz der Bridge verloren — beende mich, Docker startet mich neu");
|
||||
process.exit(1);
|
||||
}
|
||||
}, NETZ_CHECK_MS);
|
||||
|
||||
// ── HTTP Server + WebSocket fuer Browser ────────────────
|
||||
|
||||
// ── Modell-Downloads auf LLM-Boxen ──────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user