{"record":{"id":"bb9481d57449af9b","repo":"nats-io/nats-server","slug":"group-node-missing","errorCode":null,"errorMessage":"group node missing","messagePattern":"group node missing","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"server/jetstream_cluster.go","lineNumber":1046,"sourceCode":"\tif err != nil {\n\t\treturn errors.New(\"stream not found\")\n\t}\n\n\tmsetNode := mset.raftNode()\n\tmset.cfgMu.RLock()\n\treplicas := mset.cfg.Replicas\n\tmset.cfgMu.RUnlock()\n\tvar nrgWerr error\n\tif node != nil {\n\t\tnrgWerr = node.GetWriteErr()\n\t}\n\tstreamWerr := mset.getWriteErr()\n\tswitch {\n\tcase replicas <= 1:\n\t\treturn nil // No further checks for R=1 streams\n\n\tcase node == nil:\n\t\treturn errors.New(\"group node missing\")\n\n\tcase msetNode == nil:\n\t\t// Can happen when the stream's node is not yet initialized.\n\t\treturn errors.New(\"stream node missing\")\n\n\tcase node != msetNode:\n\t\ts.Warnf(\"Detected stream cluster node skew '%s > %s'\", acc.GetName(), streamName)\n\t\treturn errors.New(\"cluster node skew detected\")\n\n\tcase nrgWerr != nil:\n\t\treturn fmt.Errorf(\"node write error: %v\", nrgWerr)\n\n\tcase streamWerr != nil:\n\t\treturn fmt.Errorf(\"stream write error: %v\", streamWerr)\n\n\tcase !mset.isMonitorRunning():\n\t\treturn errors.New(\"monitor goroutine not running\")\n","sourceCodeStart":1028,"sourceCodeEnd":1064,"githubUrl":"https://github.com/nats-io/nats-server/blob/3a66a489d262bf89b71a71c955c94920394532f3/server/jetstream_cluster.go#L1028-L1064","documentation":"Returned by jetStream.isStreamHealthy for replicated (Replicas > 1) streams when the stream assignment's Raft group has no node (sa.Group.node == nil). The server knows about the group but has not been assigned/started the Raft peer, so replication health cannot be checked.","triggerScenarios":"HEALTHCHECK against an R>1 stream whose raft group node has not yet been created on this server, e.g. during group placement, peer removal/reassignment, or before monitor startup.","commonSituations":"Scaling a stream's replica count; a peer was just moved to this server; cluster was scaled down/up and assignments are being rebalanced; server recovering its raft state.","solutions":["Wait for the raft group node to be initialized on this peer and re-check health","Inspect raft group placement with jsz and confirm this server is an expected peer","If stuck, check meta group logs for placement errors and restart the server to trigger re-init"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"if err != nil && strings.Contains(err.Error(), \"group node missing\") {\n    // node not yet placed/initialized; retry after backoff\n    time.Sleep(backoff)\n    return healthcheck()\n}","preventionTips":["Avoid health checks during replica-count changes or peer reassignments","Use jsz to confirm expected peer placement before probing","Give servers time to initialize raft groups after startup or scaling events"],"tags":["jetstream","raft","clustering","healthcheck"],"backgroundTag":"jetstream-raft-node-missing","analyzedSha":"3a66a489d262bf89b71a71c955c94920394532f3","analyzedAt":"2026-09-02T04:41:54.247Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}