Skip to content

feat(router): truly uncap the mux standby pool, filled in the background - #4202

Merged
0pcom merged 1 commit into
skycoin:developfrom
0pcom:feat/uncap-mux-background-fill
Aug 26, 2026
Merged

feat(router): truly uncap the mux standby pool, filled in the background#4202
0pcom merged 1 commit into
skycoin:developfrom
0pcom:feat/uncap-mux-background-fill

Conversation

@0pcom

@0pcom 0pcom commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

Operator direction: set up every disjoint route the topology offers, held in warm standby, ready to switch in at a moment's notice.

  • adaptStandbyMax 60 → 512 (Mux = 513); 512 sits above any realistic single-exit disjoint count (~480 for a warm visor), so the binding limit is the topology, discovered by the self-heal backoff — not the constant.
  • Decouple foreground/background so the uncap isn't a connect-time storm: establishMuxRoutes caps its synchronous initial dial at initialForegroundMux (16) — a lean mux that returns fast — and the background self-heal fills the rest one leg at a time.
  • Self-heal no-progress backoff: once N consecutive dials fail to grow the degree (disjoint set exhausted for now), settle and stop instead of hammering the setup node toward an unreachable 513; a later leg death or newly-online transport re-triggers the fill. The target is a ceiling the fill tracks the topology up to, never a storm.

bundle.wasm regenerated (TinyGo); parity_test green; adaptive Mux assertion 61 → 513.

Operator direction: set up every disjoint route the topology offers, held in
warm standby, ready to switch in at a moment's notice — not a small reserve.

- adaptStandbyMax 60 -> 512 so Mux (= adaptRevActive + adaptStandbyMax) is 513;
  512 sits above any realistic single-exit disjoint count (~480 for a warm
  visor), so the binding limit is the topology, not the constant.
- Decouple foreground from background so the uncap is not a connect-time storm:
  establishMuxRoutes caps its SYNCHRONOUS initial dial at initialForegroundMux
  (16) — a lean mux that returns fast — and the background self-heal fills the
  rest of the disjoint pool one leg at a time.
- Self-heal no-progress backoff: once N consecutive dials fail to grow the degree
  (the disjoint set is exhausted for now), settle at the achievable degree and
  stop instead of hammering the setup node toward an unreachable 513. A later leg
  death or newly-online transport re-triggers the heal, so the target is a
  ceiling the fill tracks the topology up to, never a storm.

bundle.wasm regenerated (TinyGo); parity_test (wazero) green; the adaptive Mux
assertion updated 61 -> 513.
@0pcom
0pcom merged commit 536dfc1 into skycoin:develop Aug 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant