{"record":{"id":"cc4066828105c00c","repo":"gofr-dev/gofr","slug":"get-stream-error","errorCode":null,"errorMessage":"get stream error","messagePattern":"get stream error","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/gofr/datasource/pubsub/nats/errors.go","lineNumber":18,"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":"errGetStream (errors.go:18) is returned by StreamManager.GetStream when looking up a stream handle via jetstream.Stream fails — typically the stream does not exist or the JetStream context is invalid. Exercised by TestStreamManager_GetStream_Error.","triggerScenarios":"Calling StreamManager.GetStream for a stream name that was never created or was deleted; JetStream unavailable; wrong account lacking access to the stream.","commonSituations":"Consumer setup code fetching a stream before the provisioning step ran; typo'd stream name (case-sensitive); multi-environment setups querying a stream that exists only in staging.","solutions":["Verify the stream name matches exactly (NATS stream names are case-sensitive) via `nats stream ls`.","Create the stream first (CreateStream/CreateOrUpdateStream) before getting a handle to it.","Confirm you're connected to the intended server/account that hosts the stream.","Handle the not-found case explicitly in your flow instead of treating it as a fatal error."],"exampleFix":"// before: get stream that may not exist yet\ns, err := sm.GetStream(ctx, \"ORDERS\")\n// after: ensure it exists first\nif _, err := sm.GetStream(ctx, \"ORDERS\"); err != nil {\n    err = sm.CreateOrUpdateStream(ctx, &jetstream.StreamConfig{Name: \"ORDERS\", Subjects: []string{\"orders.>\"}})\n}","handlingStrategy":"validation","validationCode":"if name == \"\" {\n    return errors.New(\"stream name required\")\n}\nif _, err := js.Stream(ctx, name); err != nil {\n    return fmt.Errorf(\"stream %q not found; create it first\", name)\n}","typeGuard":null,"tryCatchPattern":"s, err := sm.GetStream(ctx, name)\nif err != nil {\n    if errors.Is(err, jetstream.ErrStreamNotFound) {\n        return sm.CreateOrUpdateStream(ctx, defaultCfg(name))\n    }\n    return err\n}","preventionTips":["Run stream provisioning before consumer/subscription setup.","Keep stream names in constants/config, never inline strings.","Remember names are case-sensitive.","Add an integration check that the expected stream exists at startup."],"tags":["nats","jetstream","stream","gofr"],"backgroundTag":"stream-not-found","analyzedSha":"187eb24962502e91f1fee856230670958b66e89c","analyzedAt":"2026-09-01T20:34:54.554Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}