From a423de3380d703b3001591a51f5c06cc20d0d497 Mon Sep 17 00:00:00 2001 From: Julian <115516918+juliansommer@users.noreply.github.com> Date: Wed, 28 Jan 2026 13:45:13 +1000 Subject: [PATCH] fix: actual fix --- hive/daemon/daemon.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/hive/daemon/daemon.go b/hive/daemon/daemon.go index ff7e22a60..694aa3957 100644 --- a/hive/daemon/daemon.go +++ b/hive/daemon/daemon.go @@ -438,6 +438,13 @@ func (d *Daemon) Start() error { log.Printf("Connected to NATS server at %s", d.config.NATS.Host) + // Start cluster manager HTTP server FIRST + // This must happen before JetStream init so other nodes can join via /join endpoint + // and help form the NATS cluster (avoids chicken-and-egg in multi-node setup) + if err := d.ClusterManager(); err != nil { + return fmt.Errorf("failed to start cluster manager: %w", err) + } + // Initialize JetStream for KV state storage (required - no disk fallback) // Start with 1 replica to allow single-node startup, then upgrade if cluster has more nodes // Retry with backoff if JetStream is not ready yet @@ -664,11 +671,6 @@ func (d *Daemon) Start() error { return fmt.Errorf("failed to subscribe to NATS hive.nodes.discover: %w", err) } - // Start cluster manager HTTP server - if err := d.ClusterManager(); err != nil { - return fmt.Errorf("failed to start cluster manager: %w", err) - } - // Setup graceful shutdown d.setupShutdown()