fix(fmcd): cap CPU + watchdog-restart the iroh relay hot-loop

On NAT'd nodes that can reach the iroh federation neither directly nor
via iroh's public relays, fmcd's embedded iroh networking enters a
relay/hole-punch reconnect hot-loop that pegs its entire CPU allotment
indefinitely (observed ~1 core sustained for 4 days on a Tailscale node,
while LAN nodes that reach the guardian directly stay <3%). fmcd 0.8.0
exposes no iroh/relay knobs, so:

- fmcd-run now samples fmcd's own CPU and restarts it when it stays near
  its allotment for ~15 min (a restart demonstrably clears the stuck iroh
  state; real work is bursty and never flat-pegs a core for minutes).
- Lower cpu_limit 1 -> 0.25 core so a stuck instance can't starve the
  node (steady-state is <3% of a core; joins are brief).

Ships as fmcd:0.8.1 (launcher-only rebuild, same fmcd binary). Bumped the
image pin + cpu_limit in the manifest, image-versions.sh, the embedded
catalog manifest (releases/app-catalog.json), and the UI catalogs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
archipelago
2026-06-28 12:19:27 -04:00
co-authored by Claude Opus 4.8
parent 4519dbf04f
commit 6734947c3e
6 changed files with 79 additions and 11 deletions
+1 -1
View File
@@ -61,7 +61,7 @@ FEDIMINT_GATEWAY_IMAGE="$ARCHY_REGISTRY/gatewayd:v0.10.0"
# from minmoto/fmcd. NOT yet added to the bundled CONTAINER_IMAGES list / first-
# boot auto-create: bundling fleet-wide needs a fleet-reachable default
# federation first (the interim default is node-local). See docs/dual-ecash-design.md.
FMCD_IMAGE="$ARCHY_REGISTRY/fmcd:0.8.0"
FMCD_IMAGE="$ARCHY_REGISTRY/fmcd:0.8.1"
# Media
REDIS_IMAGE="$ARCHY_REGISTRY/redis:7.4.8"