Agent ignoriert auth_ok.scan_interval beim Connect — Backend-Wert nicht persistent + 30s/300s-Default-Mismatch #44

Closed
opened 2026-06-02 10:41:53 +00:00 by chinux · 0 comments
Owner

Problem

Der per-Node-scan_interval aus dem Backend wird vom Agent beim Connect ignoriert — er greift nur über den Live-Command set_interval (also nur, wenn man den Wert im UI ändert). Folgen:

  1. Default-Mismatch 10×: Agent-Default ist 30 s (config.rs:35), Backend/UI-Default 300 s (node.py, auth_ok). Out of the box scannt der Agent alle 30 s statt 5 min.
  2. Nicht persistent: Ein im UI gesetztes Intervall geht beim Agent-Restart/Reconnect verloren — der Agent re-seedet aus seiner lokalen Config (AGENT_SCAN_INTERVAL/SCAN_INTERVAL/Default 30) und verwirft den Backend-Wert, bis zufällig wieder ein set_interval kommt.

Das hat den CPU-Spike aus #38 mit verschärft (zu aggressiver Scan-Takt, nicht zuverlässig vom UI steuerbar).

Ist (Code)

  • Node-Agent/src/auth.rs: AgentState liest aus auth_ok nur scan_range_min/max + internal_networknicht scan_interval (obwohl das Backend es in agent_ws.py:170 mitschickt).
  • Node-Agent/src/main.rs:92: shared.scan_interval wird nur aus cfg.scan_interval geseedet; run_once (Z. 125) wendet den auth_ok-Wert nirgends an.
  • Live-Pfad set_interval (dispatcher.rs:112) funktioniert, ist aber der einzige.

Fix

  1. auth.rs: AgentState um scan_interval: u64 erweitern; aus auth_ok parsen: data.get("scan_interval").and_then(|v| v.as_u64()).unwrap_or(300).
  2. main.rs run_once (nach authenticate, analog zu internal_network/scan_range): shared.scan_interval.store(auth_state.scan_interval.max(1), Ordering::Relaxed); → Backend-Wert wird bei jedem Connect maßgeblich → überlebt Restarts.
  3. Default angleichen: Agent-Default 30 → 300 (config.rs:35), damit das kurze Pre-Auth-Fenster nicht mehr 10× zu aggressiv ist. (Lokales AGENT_SCAN_INTERVAL bleibt als Override für das Seeding.)

Damit ist die Reihenfolge sauber: Backend/UI = Source of Truth (wie bei scan_range), lokale Config nur Seed bis zum ersten auth_ok.

Akzeptanz

  • Im UI gesetzter per-Node-scan_interval greift sofort und nach Agent-Neustart.
  • Frischer Agent ohne Config läuft mit 300 s, nicht 30 s.
  • set_interval (Live-Änderung) unverändert funktionsfähig.
  • cargo build grün.

Bezug

Direkter Hebel gegen das Wiederauftreten von #38 (Scan-Takt zuverlässig vom UI steuerbar).

Branch

feat/agent-apply-auth-scan-interval

## Problem Der per-Node-`scan_interval` aus dem Backend wird vom Agent **beim Connect ignoriert** — er greift nur über den Live-Command `set_interval` (also nur, wenn man den Wert im UI *ändert*). Folgen: 1. **Default-Mismatch 10×:** Agent-Default ist **30 s** (`config.rs:35`), Backend/UI-Default **300 s** (`node.py`, auth_ok). Out of the box scannt der Agent alle 30 s statt 5 min. 2. **Nicht persistent:** Ein im UI gesetztes Intervall geht beim **Agent-Restart/Reconnect** verloren — der Agent re-seedet aus seiner lokalen Config (`AGENT_SCAN_INTERVAL`/`SCAN_INTERVAL`/Default 30) und verwirft den Backend-Wert, bis zufällig wieder ein `set_interval` kommt. Das hat den CPU-Spike aus #38 mit verschärft (zu aggressiver Scan-Takt, nicht zuverlässig vom UI steuerbar). ## Ist (Code) - `Node-Agent/src/auth.rs`: `AgentState` liest aus `auth_ok` nur `scan_range_min/max` + `internal_network` — **nicht** `scan_interval` (obwohl das Backend es in agent_ws.py:170 mitschickt). - `Node-Agent/src/main.rs:92`: `shared.scan_interval` wird nur aus `cfg.scan_interval` geseedet; `run_once` (Z. 125) wendet den auth_ok-Wert nirgends an. - Live-Pfad `set_interval` (dispatcher.rs:112) funktioniert, ist aber der einzige. ## Fix 1. **`auth.rs`**: `AgentState` um `scan_interval: u64` erweitern; aus auth_ok parsen: `data.get("scan_interval").and_then(|v| v.as_u64()).unwrap_or(300)`. 2. **`main.rs` `run_once`** (nach `authenticate`, analog zu `internal_network`/scan_range): `shared.scan_interval.store(auth_state.scan_interval.max(1), Ordering::Relaxed);` → Backend-Wert wird bei **jedem** Connect maßgeblich → überlebt Restarts. 3. **Default angleichen**: Agent-Default `30 → 300` (`config.rs:35`), damit das kurze Pre-Auth-Fenster nicht mehr 10× zu aggressiv ist. (Lokales `AGENT_SCAN_INTERVAL` bleibt als Override für das Seeding.) Damit ist die Reihenfolge sauber: Backend/UI = Source of Truth (wie bei `scan_range`), lokale Config nur Seed bis zum ersten auth_ok. ## Akzeptanz - Im UI gesetzter per-Node-`scan_interval` greift sofort **und** nach Agent-Neustart. - Frischer Agent ohne Config läuft mit 300 s, nicht 30 s. - `set_interval` (Live-Änderung) unverändert funktionsfähig. - `cargo build` grün. ## Bezug Direkter Hebel gegen das Wiederauftreten von #38 (Scan-Takt zuverlässig vom UI steuerbar). ## Branch `feat/agent-apply-auth-scan-interval`
chinux 2026-06-02 10:41:53 +00:00
  • closed this issue
  • added the
    bug
    agent
    labels
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#44
No description provided.