{"record":{"id":"f9ddfffc57c46477","repo":"gofr-dev/gofr","slug":"create-stream-error","errorCode":null,"errorMessage":"create stream error","messagePattern":"create stream error","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/gofr/datasource/pubsub/nats/errors.go","lineNumber":16,"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":"errCreateStream (errors.go:16) is returned by StreamManager.CreateStream when the underlying jetstream.CreateStream (or CreateOrUpdateStream) call fails. The stream could not be created on the NATS server, e.g. invalid config or a conflicting existing stream. Exercised by TestStreamManager_CreateStream_Error.","triggerScenarios":"StreamManager.CreateStream with a config the server rejects: duplicate stream name with different config, invalid subjects pattern, insufficient account resources, or no JetStream connection.","commonSituations":"Two services defining the same stream name with mismatched retention/storage settings; malformed subject wildcards (e.g. \"orders**\"); account storage limit reached; stream already exists and plain Create is used.","solutions":["Use CreateOrUpdateStream instead of CreateStream when the stream may already exist with the same config.","Validate subject patterns (valid NATS wildcards: *, >) and stream name before calling.","Check existing stream config with `nats stream info <name>` and align your StreamConfig (retention, storage, replicas).","Confirm the account has storage available and JetStream permissions."],"exampleFix":"// before\nerr := sm.CreateStream(ctx, &jetstream.StreamConfig{Name: \"ORDERS\", Subjects: []string{\"orders**\"}})\n// after: valid wildcard + upsert semantics\nerr := sm.CreateOrUpdateStream(ctx, &jetstream.StreamConfig{Name: \"ORDERS\", Subjects: []string{\"orders.>\"}})","handlingStrategy":"fallback","validationCode":"cfg := &jetstream.StreamConfig{Name: \"ORDERS\", Subjects: []string{\"orders.>\"}}\nfor _, s := range cfg.Subjects {\n    if !validNatsSubject(s) {\n        return fmt.Errorf(\"invalid subject pattern %q\", s)\n    }\n}","typeGuard":null,"tryCatchPattern":"if err := sm.CreateStream(ctx, cfg); err != nil {\n    if strings.Contains(err.Error(), \"already in use\") || errors.Is(err, jetstream.ErrStreamNameAlreadyInUse) {\n        return sm.CreateOrUpdateStream(ctx, cfg)\n    }\n    return err\n}","preventionTips":["Prefer CreateOrUpdateStream for idempotent provisioning.","Centralize stream definitions in one provisioning module/pipeline.","Validate subject wildcards before deployment.","Check account JetStream storage limits for the environment."],"tags":["nats","jetstream","stream","gofr"],"backgroundTag":"stream-create-failed","analyzedSha":"187eb24962502e91f1fee856230670958b66e89c","analyzedAt":"2026-09-01T20:34:54.554Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}