{"record":{"id":"d3e79c646d1d55d7","repo":"gofr-dev/gofr","slug":"delete-stream-error","errorCode":null,"errorMessage":"delete stream error","messagePattern":"delete stream error","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/gofr/datasource/pubsub/nats/errors.go","lineNumber":17,"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":"errDeleteStream (errors.go:17) is returned by StreamManager.DeleteStream when jetstream.DeleteStream fails — the stream could not be deleted from the server (not found, permissions, or connectivity). Related sentinel errFailedToDeleteStream exists for the client-level path. Exercised by TestStreamManager_DeleteStream_Error.","triggerScenarios":"Calling StreamManager.DeleteStream with a stream name that does not exist, a connection that has dropped, or without JetStream delete permissions.","commonSituations":"Cleanup/teardown code deleting an already-removed stream; environment mismatch (deleting a stream provisioned in another account); operator revoked delete permissions.","solutions":["Check the stream exists before deleting (`nats stream ls`) and treat not-found as success in idempotent cleanup.","Verify the user/account has JetStream admin permissions to delete streams.","Confirm the connection is alive and you are deleting on the right server/account (check servers/credentials config).","Inspect the wrapped NATS error for the exact API failure code."],"exampleFix":"// before: unconditional delete fails on missing stream\nerr := sm.DeleteStream(ctx, \"ORDERS\")\n// after: idempotent teardown\nif _, serr := js.Stream(ctx, \"ORDERS\"); serr == nil {\n    err = sm.DeleteStream(ctx, \"ORDERS\")\n}","handlingStrategy":"validation","validationCode":"if _, err := js.Stream(ctx, name); err != nil {\n    return nil // stream already gone; delete is a no-op\n}","typeGuard":null,"tryCatchPattern":"if err := sm.DeleteStream(ctx, name); err != nil {\n    if errors.Is(err, jetstream.ErrStreamNotFound) {\n        return nil // idempotent cleanup\n    }\n    return err\n}","preventionTips":["Treat not-found as success in teardown/cleanup code.","Verify stream names against `nats stream ls` for the target account.","Ensure the deleting identity has JetStream admin permissions.","Scope deletes to the correct server/account per environment."],"tags":["nats","jetstream","stream","gofr"],"backgroundTag":"stream-delete-failed","analyzedSha":"187eb24962502e91f1fee856230670958b66e89c","analyzedAt":"2026-09-01T20:34:54.554Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}