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

  1. Enable JetStream on the NATS server (start with `-js` or add `jetstream { store_dir ... }` to the config).
  2. Check the account/user has JetStream permissions (no JetStream deny in the account claims).
  3. Align the nats.go / jetstream client library version with the server version (nats-server --version vs go.mod).
  4. 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

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.