nats-io/nats-server · error

config reload not supported for jetstream max memory and max

Error message

config reload not supported for jetstream max memory and max store

What it means

Config reload (SIGHUP) rejects changes to JetStream max_memory and max_storage because these limits cannot be applied to a running JetStream instance; the generic option-diff fallback in the reload path catches the changed field and aborts the whole reload with the old and new values. Fired only when a reload actually changes these fields.

Source

Thrown at server/reload.go:1992

			if add, del := diffProxiesTrustedKeys(old.Trusted, new.Trusted); len(add) > 0 || len(del) > 0 {
				diffOpts = append(diffOpts, &proxiesReload{add: add, del: del})
			}
		default:
			// TODO(ik): Implement String() on those options to have a nice print.
			// %v is difficult to figure what's what, %+v print private fields and
			// would print passwords. Tried json.Marshal but it is too verbose for
			// the URL array.

			// Bail out if attempting to reload any unsupported options.
			return nil, fmt.Errorf("config reload not supported for %s: old=%v, new=%v",
				field.Name, oldValue, newValue)
		}
	}

	// If not disabling JS but limits have changed then it is an error.
	if !disableJS {
		if jsMemLimitsChanged || jsFileLimitsChanged {
			return nil, fmt.Errorf("config reload not supported for jetstream max memory and max store")
		}
		if jsStoreDirChanged {
			return nil, fmt.Errorf("config reload not supported for jetstream storage dir")
		}
	}

	return diffOpts, nil
}

func copyRemoteGWConfigsWithoutTLSConfig(current []*RemoteGatewayOpts) []*RemoteGatewayOpts {
	l := len(current)
	if l == 0 {
		return nil
	}
	rgws := make([]*RemoteGatewayOpts, 0, l)
	for _, rcfg := range current {
		cp := *rcfg
		cp.TLSConfig = nil

View on GitHub (pinned to 3a66a489d2)

Solutions

  1. Revert max_memory/max_storage in the config to their current runtime values and reload again
  2. Restart the nats-server process to apply new JetStream memory/storage limits
  3. Keep these fields in a separate config used only at initial startup
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server/reload.go:1992 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of nats-io/nats-server@3a66a489d2 (2026-09-02). Data as JSON: /api/errors/2313081661e5e06e. Report an issue: GitHub.