{"record":{"id":"4b3bbd562977fc0c","repo":"zitadel/zitadel","slug":"cache-connector-q-not-enabled","errorCode":null,"errorMessage":"cache connector %q not enabled","messagePattern":"cache connector %q not enabled","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"backend/v3/storage/cache/connector/connector.go","lineNumber":48,"sourceCode":"\t\treturn Connectors{}, nil\n\t}\n\treturn Connectors{\n\t\tConfig: *conf,\n\t\tMemory: gomap.NewConnector(conf.Connectors.Memory),\n\t}, nil\n}\n\nfunc StartCache[I ~int, K ~string, V cache.Entry[I, K]](background context.Context, indices []I, purpose cache.Purpose, conf *cache.Config, connectors Connectors) (cache.Cache[I, K, V], error) {\n\tif conf == nil || conf.Connector == cache.ConnectorUnspecified {\n\t\treturn noop.NewCache[I, K, V](), nil\n\t}\n\tif conf.Connector == cache.ConnectorMemory && connectors.Memory != nil {\n\t\tc := gomap.NewCache[I, K, V](background, indices, *conf)\n\t\tconnectors.Memory.Config.StartAutoPrune(background, c, purpose)\n\t\treturn c, nil\n\t}\n\n\treturn nil, fmt.Errorf(\"cache connector %q not enabled\", conf.Connector)\n}\n","sourceCodeStart":30,"sourceCodeEnd":50,"githubUrl":"https://github.com/zitadel/zitadel/blob/13948f2bcd6f257794dbd6d342c2ac30bc88fe54/backend/v3/storage/cache/connector/connector.go#L30-L50","documentation":"StartCache returns this error when the requested cache purpose/configuration requires a connector (memory, etc.) that was not initialized/enabled in the connectors registry. If the connector struct field for the configured connector type is nil, no cache implementation can be built, so startup fails with a quoted connector name in the message.","triggerScenarios":"Config enables a cache purpose with Connector set to a type whose entry in the connectors struct is nil — e.g. config says memory/redis but startAPIs/startCaches only wired up a different connector, or the connector's own startup was skipped/disabled.","commonSituations":"Enabling caching features (e.g. in newer ZITADEL versions) without configuring the corresponding cache connector section; partially enabled config files after upgrades; typos making the connector type mismatch the initialized one.","solutions":["Configure and enable the connector named in the error (e.g. the memory or redis cache connector section in config)","Ensure the connector startup ran before StartCache (startCaches wiring) so the registry entry is non-nil","If caching is not desired, disable the cache purpose in the configuration instead of leaving a dangling connector reference"],"exampleFix":"// before\nCache:\n  Connectors:\n    # no redis configured, purpose references redis\n// after\nCache:\n  Connectors:\n    Redis:\n      Enabled: true\n      Addresses: [localhost:6379]","handlingStrategy":"validation","validationCode":"if conf.Connector == cache.ConnectorMemory && connectors.Memory == nil {\n\treturn fmt.Errorf(\"memory cache connector is not enabled; configure Cache.Connectors.Memory\")\n}","typeGuard":null,"tryCatchPattern":"c, err := cache.StartCache[I, K, V](background, indices, conf, connectors)\nif err != nil {\n\treturn fmt.Errorf(\"starting cache: %w\", err)\n}","preventionTips":["Enable the connector section referenced by each cache purpose in config","Verify connector startup wiring (startCaches) ran before purposes are started","After upgrades, re-check cache-related config keys against defaults.yaml"],"tags":["cache","configuration","startup","dependency"],"backgroundTag":"feature-not-enabled","analyzedSha":"13948f2bcd6f257794dbd6d342c2ac30bc88fe54","analyzedAt":"2026-09-06T10:16:19.814Z","contentChangedAt":"2026-09-06T10:16:19.814Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}