From 42b21348cb8429fa7942aede4839e50445aeda5e Mon Sep 17 00:00:00 2001 From: Ryan Hamamura <58859899+ryanhamamura@users.noreply.github.com> Date: Thu, 19 Feb 2026 12:24:37 -1000 Subject: [PATCH] fix: use random port for embedded NATS to avoid binding conflicts Port 0 is treated as default (4222) by NATS server, causing hangs when that port is unavailable. Port -1 (RANDOM_PORT) binds to an OS-assigned free port, which is correct for an embedded server. --- nats.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/nats.go b/nats.go index fc69822..39892a7 100644 --- a/nats.go +++ b/nats.go @@ -9,6 +9,7 @@ import ( "time" "github.com/delaneyj/toolbelt/embeddednats" + natsserver "github.com/nats-io/nats-server/v2/server" "github.com/nats-io/nats.go" ) @@ -50,7 +51,14 @@ func startDefaultNATS() (dn *defaultNATS, err error) { ctx, cancel := context.WithCancel(context.Background()) - ns, err := embeddednats.New(ctx, embeddednats.WithDirectory(dataDir)) + ns, err := embeddednats.New(ctx, + embeddednats.WithDirectory(dataDir), + embeddednats.WithNATSServerOptions(&natsserver.Options{ + JetStream: true, + StoreDir: dataDir, + Port: -1, + }), + ) if err != nil { cancel() os.RemoveAll(dataDir)