{"record":{"id":"d32ae7f7b86fa3f3","repo":"gofr-dev/gofr","slug":"jstream-is-not-configured","errorCode":null,"errorMessage":"jStream is not configured","messagePattern":"jStream is not configured","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/gofr/datasource/pubsub/nats/errors.go","lineNumber":13,"sourceCode":"package nats\n\nimport \"errors\"\n\nvar (\n\t// Client Errors.\n\terrServerNotProvided       = errors.New(\"client server address not provided\")\n\terrSubjectsNotProvided     = errors.New(\"subjects not provided\")\n\terrConsumerNotProvided     = errors.New(\"consumer name not provided\")\n\terrConsumerCreationError   = errors.New(\"consumer creation error\")\n\terrFailedToDeleteStream    = errors.New(\"failed to delete stream\")\n\terrPublishError            = errors.New(\"publish error\")\n\terrJetStreamNotConfigured  = errors.New(\"jStream is not configured\")\n\terrJetStreamCreationFailed = errors.New(\"jStream creation failed\")\n\terrJetStream               = errors.New(\"jStream error\")\n\terrCreateStream            = errors.New(\"create stream error\")\n\terrDeleteStream            = errors.New(\"delete stream error\")\n\terrGetStream               = errors.New(\"get stream error\")\n\terrCreateOrUpdateStream    = errors.New(\"create or update stream error\")\n\terrHandlerError            = errors.New(\"handler error\")\n\terrConnectionError         = errors.New(\"connection error\")\n\terrSubscriptionError       = errors.New(\"subscription error\")\n)\n","sourceCodeStart":1,"sourceCodeEnd":24,"githubUrl":"https://github.com/gofr-dev/gofr/blob/187eb24962502e91f1fee856230670958b66e89c/pkg/gofr/datasource/pubsub/nats/errors.go#L1-L24","documentation":"errJetStreamNotConfigured (errors.go:13) is returned by the connection manager's jetStream()/validateJetStream helpers when JetStream was never initialized on the client. gofr requires the NATS connection to have a JetStream context before any JetStream-backed operation (publish, subscribe, streams, health). It is a programming/lifecycle error, not a network error.","triggerScenarios":"Calling jetStream() or validateSubscribePrerequisites before connManager.Connect() succeeded, or when the Client was constructed with a nil jetStreamCreator / JetStream was never created; also asserted in ConnectionManager tests.","commonSituations":"Using the client before app.Start()/Connect completes; building a Client manually without wiring NewConnectionManager; calling Subscribe/Publish during initialization failure paths; tests instantiating Client{} directly.","solutions":["Ensure connManager.Connect() (via client Connect/app bootstrap) succeeds before any publish/subscribe call.","Provide a jetStreamCreator (DefaultJetStreamCreator) when constructing the client so JetStream is initialized.","Verify the NATS server has JetStream enabled (-js flag / jetstream config block); without it JetStream() cannot be created.","Check Connect() error handling — a swallowed connect error leaves jetStream nil, producing this error later."],"exampleFix":"// before: using client before connection is established\nclient.Subscribe(ctx, \"orders\", handler)\n// after: connect first, then subscribe\nif err := client.Connect(); err != nil { return err }\nclient.Subscribe(ctx, \"orders\", handler)","handlingStrategy":"validation","validationCode":"if !clientConnected || js == nil {\n    return errors.New(\"NATS client not connected/JetStream not configured; call Connect() first\")\n}","typeGuard":null,"tryCatchPattern":"if err := client.Publish(ctx, topic, msg); err != nil {\n    if strings.Contains(err.Error(), \"jStream is not configured\") {\n        // re-init: call Connect() before retrying\n    }\n    return err\n}","preventionTips":["Always run Connect()/app bootstrap before any publish or subscribe call.","Fail fast at startup if Connect() returns an error; never swallow it.","Construct the client through gofr's datasource wiring so jetStreamCreator is set.","Add a unit/integration test that asserts publish works after a fresh Connect."],"tags":["nats","jetstream","initialization","gofr"],"backgroundTag":"client-not-initialized","analyzedSha":"187eb24962502e91f1fee856230670958b66e89c","analyzedAt":"2026-09-01T20:34:54.554Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}