- feat(backends): per-Backend `server_timeout_seconds` (nullable, Default 60s). Rendert `timeout server <N>s` im HAProxy-Backend-Block — für langsam antwortende Upstreams (KI-/Inferenz-Server mit gepufferter Antwort). Migration 0044 (+CHECK 1..86400), Model/Repo/Template/UI + Render-Test. - fix(ui): Dashboard-Alert-Karte verlinkt auf /alerts?tab=events; Alerts-Seite respektiert ?tab= (Deeplink landete bisher auf leerem Channels-Tab). - feat(scheduler): alert_events-Retention (90d) im täglichen Cleanup-Tick — Schutz vor unbounded growth der node-lokalen Health-Event-History. - fix(cluster): Cert-Sync prunt jetzt lokale .pem die der Primary nicht mehr hat (Waisen gelöschter Domains); schützt _default.pem + eigenen Node-Cert. - fix(security): x/text v0.37→v0.39 (GO-2026-5970, Infinite-Loop; via ACME+goose aktiv aufgerufen — govulncheck-Release-Gate). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
28 lines
1.1 KiB
SQL
28 lines
1.1 KiB
SQL
-- +goose Up
|
|
-- +goose StatementBegin
|
|
|
|
-- Per-Backend `timeout server` (Sekunden). NULL = defaults-Timeout (60s,
|
|
-- siehe haproxy.cfg.tpl). Gedacht für Upstreams die LANGE für die Antwort
|
|
-- brauchen und dabei NICHT streamen — z. B. KI-/Inferenz-Server, die eine
|
|
-- gepufferte Antwort erst nach Minuten schicken. Ohne Override kappt der
|
|
-- 60s-defaults-Timeout diese Requests.
|
|
--
|
|
-- Bewusst NULL-per-default: Backends ohne Langläufer-Workload behalten den
|
|
-- kurzen Timeout (Connection-Hygiene / Slowloris-Schutz, vgl. v1.3.2).
|
|
-- Der Renderer setzt `timeout server <N>s` NUR wenn ein Wert gesetzt ist.
|
|
--
|
|
-- CHECK 1..86400: mind. 1s, max. 24h — verhindert 0/negativ (würde HAProxy-
|
|
-- Config sprengen bzw. „unendlich" bedeuten) und absurd hohe Werte.
|
|
ALTER TABLE backends
|
|
ADD COLUMN IF NOT EXISTS server_timeout_seconds INTEGER
|
|
CONSTRAINT backends_server_timeout_range
|
|
CHECK (server_timeout_seconds IS NULL
|
|
OR (server_timeout_seconds BETWEEN 1 AND 86400));
|
|
|
|
-- +goose StatementEnd
|
|
|
|
-- +goose Down
|
|
-- +goose StatementBegin
|
|
ALTER TABLE backends DROP COLUMN IF EXISTS server_timeout_seconds;
|
|
-- +goose StatementEnd
|