Skip to content

v0.15.1 — a node that fails says why

Choose a tag to compare

@gmpassos gmpassos released this 15 Jul 00:48
48ba3b2

A node that cannot start should say why, not go dark.

omnyserver node start --hub wss://hub:8081 --id web-01 --principal p --token t
Connecting to wss://hub:8081/node …
hub rejected the connection (forbidden): principal p may not register node web-01
  (the node.register action needs the "node" role)

Fixed — node start was silent when a connection failed

The signal was never missing. The node runtime already receives the Hub's rejection — the exact reason, principal … may not register node … — but its logger defaulted to a no-op that OmnyServer never replaced. So a node that authenticated and was then refused registration (a grant with the wrong role) retried forever without a word. Finding a one-line misconfiguration took a live packet trace.

The runtime now logs through the CLI:

  • A failure and its cause are printed once — repeats within a short window are collapsed, so a node that keeps retrying a rejection it cannot fix says why once, not once per backoff. It stays up and recovers automatically when you fix the grant.
  • Connecting to <url> … prints before it blocks, and a terminal auth failure exits with error: <reason> instead of an unhandled exception and a stack trace.
  • --verbose (-v) shows the full lifecycle — every attempt, handshake and heartbeat.

Fixed — a wedged capability probe could freeze registration

Capability detection shells out to docker, nvidia-smi, clinfo and the like, and the scanner waits for every probe before a node can register — with no timeout on any of them. One stuck command (a hung GPU driver, a wedged Docker daemon) would freeze the whole node, silently. Each probe now has a deadline; a timed-out probe is killed and the capability treated as absent.

Changed

  • The Hub logs a refused node registration on its own side too (refused registration: … needs the "node" role), so journalctl shows it, not only the audit trail.
  • Requires omnyhub ^1.7.0, which delivers a registration rejection to the node as a typed error the moment it arrives. Before it, a refused node waited out the register timeout (10s) on every attempt; now it fails — and logs why — at once.

Full notes: CHANGELOG.md