-
fix(bridge): replicate push-uplink config so every spoke node ships its own metrics to the hub
Release / version (push) Canceled after 0sRelease / frontend (push) Canceled after 0sRelease / linux (amd64) (push) Canceled after 0sRelease / linux (arm64) (push) Canceled after 0sRelease / windows (push) Canceled after 0sRelease / macos (push) Canceled after 0sRelease / release (push) Canceled after 0sBuild and Push Docker Image / build-and-push (push) Canceled after 0sreleased this
2026-06-21 09:14:43 +03:00 | 123 commits to main since this releaseConfirmed cause of peer metrics not reaching the hub: metrics ride the
off-Raft per-node stream (the topology bridge, which is leader-only, no longer
carries them), so each spoke node must POST its OWN metrics to the hub. But the
uplink config (hub seeds + shared secret) was persisted only to the local .env
of the node where it was configured (SaveBridge → cv → .env, not replicated),
so a peer like orangepi5-plus had bridge_enabled=false and never uplinked —
only the configured node's own + the leader's connector metrics reached the hub.Replicate the push-uplink config through cluster_config so the whole spoke
converges:- Replicator.SubmitConfigSet(key,value) writes a key into the replicated
cluster_config (CmdConfigSet). - The cluster-config reconciler now also handles the bridge: the node with a
local push uplink seeds bridge_shared_secret / bridge_remote_seeds /
bridge_mode into cluster_config (idempotent, only while unset); every node
adopts it and rebuilds its metric-stream bridge, so each ships its own
metrics to the hub. Scoped to push mode — receive (hub) / both (legacy) keep
per-node config. The topology bridge sender stays leader-gated, so followers
don't double-ship the log.
CmdConfigSet carrying the secret never reaches the hub: in push mode the bridge
ships only uplinkTypes (host/topology), and the secret is seeded only in push
mode — so it stays inside the spoke (both-mode config-sync is unchanged).Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01U3LvJu9qZfspPr21TW9ptvDownloads
- Replicator.SubmitConfigSet(key,value) writes a key into the replicated