gofr-dev/gofr · error
jStream creation failed
Error message
jStream creation failed
What it means
errJetStreamCreationFailed (errors.go:14) is returned when the JetStreamCreator's New(conn) call — typically ConnInterface.JetStream() — fails while establishing the client. This means a connection to NATS exists but the JetStream context could not be obtained. It is surfaced during DefaultJetStreamCreator.New and connection-manager setup.
Source
Thrown at pkg/gofr/datasource/pubsub/nats/errors.go:14
package nats
import "errors"
var (
// Client Errors.
errServerNotProvided = errors.New("client server address not provided")
errSubjectsNotProvided = errors.New("subjects not provided")
errConsumerNotProvided = errors.New("consumer name not provided")
errConsumerCreationError = errors.New("consumer creation error")
errFailedToDeleteStream = errors.New("failed to delete stream")
errPublishError = errors.New("publish error")
errJetStreamNotConfigured = errors.New("jStream is not configured")
errJetStreamCreationFailed = errors.New("jStream creation failed")
errJetStream = errors.New("jStream error")
errCreateStream = errors.New("create stream error")
errDeleteStream = errors.New("delete stream error")
errGetStream = errors.New("get stream error")
errCreateOrUpdateStream = errors.New("create or update stream error")
errHandlerError = errors.New("handler error")
errConnectionError = errors.New("connection error")
errSubscriptionError = errors.New("subscription error")
)
View on GitHub (pinned to 187eb24962)
Solutions
- Enable JetStream on the NATS server (start with `-js` or add `jetstream { store_dir ... }` to the config).
- Check the account/user has JetStream permissions (no JetStream deny in the account claims).
- Align the nats.go / jetstream client library version with the server version (nats-server --version vs go.mod).
- Retry after server restart — transient states during server startup can reject JetStream creation.
Example fix
// before: nats-server.conf without JetStream
// (no jetstream block)
// after: nats-server.conf
// jetstream {
// store_dir: "/data/nats"
// } Defensive patterns
Strategy: fallback
Validate before calling
// probe JetStream support before wiring the datasource
if _, err := conn.JetStream(); err != nil {
return fmt.Errorf("server has no JetStream enabled: %w", err)
} Try / catch
if err := connManager.Connect(); err != nil {
if strings.Contains(err.Error(), "jStream creation failed") {
logger.Fatalf("enable JetStream on the NATS server (-js) and restart: %v", err)
}
return err
} Prevention
- Start nats-server with JetStream enabled (-js or jetstream{} block) in every environment.
- Keep nats.go client version compatible with the nats-server version.
- Grant the account/user JetStream permissions.
- Add a smoke test that creates JetStream context in CI against a real server.
When it happens
Trigger: Calling nats.Conn.JetStream() on the established connection returns an error — JetStream disabled on the server, or the client library version rejects the JetStream setup request.
Common situations: NATS server started without JetStream enabled (missing -js or jetstream{} config); incompatible nats.go client vs server version; restricted account without JetStream permissions.
Related errors
AI-assisted analysis of gofr-dev/gofr@187eb24962 (2026-09-01).
Data as JSON: /api/errors/86cf714924c68f5d.
Report an issue: GitHub.