{"record":{"id":"51a2b12fae20d8b4","repo":"jaegertracing/jaeger","slug":"invalid-configuration-for-trace-storage-s-w","errorCode":null,"errorMessage":"invalid configuration for trace storage '%s': %w","messagePattern":"invalid configuration for trace storage '(.+?)': %w","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/jaeger/internal/extension/jaegerstorage/extension.go","lineNumber":147,"sourceCode":"\t\tTracerProvider: telset.TracerProvider,\n\t}\n\treturn &storageExt{\n\t\tconfig:           cfg,\n\t\ttelset:           tset,\n\t\tfactories:        make(map[string]tracestore.Factory),\n\t\tmetricsFactories: make(map[string]storage.MetricStoreFactory),\n\t}\n}\n\nfunc (s *storageExt) Start(_ context.Context, host component.Host) error {\n\t// Set host in telset for use in lazy factory initialization\n\ts.telset.Host = host\n\ts.telset.Metrics = otelmetrics.NewFactory(s.telset.MeterProvider).Namespace(metrics.NSOptions{Name: \"jaeger\"})\n\n\t// Validate configurations early to catch errors at startup\n\tfor name, cfg := range s.config.TraceBackends {\n\t\tif err := cfg.Validate(); err != nil {\n\t\t\treturn fmt.Errorf(\"invalid configuration for trace storage '%s': %w\", name, err)\n\t\t}\n\t}\n\tfor name, cfg := range s.config.MetricBackends {\n\t\tif err := cfg.Validate(); err != nil {\n\t\t\treturn fmt.Errorf(\"invalid configuration for metric storage '%s': %w\", name, err)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (s *storageExt) Shutdown(context.Context) error {\n\tvar errs []error\n\tfor _, factory := range s.factories {\n\t\tif closer, ok := factory.(io.Closer); ok {\n\t\t\terr := closer.Close()\n\t\t\tif err != nil {\n\t\t\t\terrs = append(errs, err)","sourceCodeStart":129,"sourceCodeEnd":165,"githubUrl":"https://github.com/jaegertracing/jaeger/blob/806f4447841ecdb60519f408b004a599d515f437/cmd/jaeger/internal/extension/jaegerstorage/extension.go#L129-L165","documentation":"storageExt.Start validates every trace backend configuration (cfg.Validate()) before any factory is created, so config mistakes fail fast at startup. When a TraceBackends entry fails validation, the error is wrapped as 'invalid configuration for trace storage %s'.","triggerScenarios":"storageExt.Start iterating s.config.TraceBackends; a backend's Validate() returns non-nil (e.g. multiple backend types set at once, none set, or invalid fields like bad Elasticsearch URLs or mutually exclusive options).","commonSituations":"Setting two backends (e.g. both cassandra and elasticsearch) for one named storage, leaving a backend entry empty, or invalid connection strings/auth settings in the traces backend config.","solutions":["Read the inner validation error to find the offending field and fix the named trace backend config","Ensure each backend entry configures exactly one backend type with valid parameters","Run config validation locally (config.Validate / otelcol validate) before deploying"],"exampleFix":"// before: two backends in one entry\nbackends:\n  primary:\n    cassandra: { ... }\n    elasticsearch: { ... }\n// after\nbackends:\n  primary:\n    elasticsearch: { ... }","handlingStrategy":"validation","validationCode":"for name, cfg := range extConfig.TraceBackends {\n    if err := cfg.Validate(); err != nil {\n        return fmt.Errorf(\"trace storage '%s' invalid: %w\", name, err)\n    }\n}","typeGuard":null,"tryCatchPattern":"if err := ext.Start(ctx, host); err != nil {\n    if strings.Contains(err.Error(), \"invalid configuration for trace storage\") {\n        return fmt.Errorf(\"fix jaegerstorage trace backend config: %w\", err)\n    }\n    return err\n}","preventionTips":["Run `otelcol validate --config` in CI for all jaeger configs","Configure exactly one backend type per trace storage entry","Review backend-specific required fields (URLs, auth) before deploy"],"tags":["go","jaeger","config","validation"],"backgroundTag":"invalid-config-value","analyzedSha":"806f4447841ecdb60519f408b004a599d515f437","analyzedAt":"2026-09-01T02:39:22.140Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T05:18:18.240Z"}