{"record":{"id":"923a71bd463b5715","repo":"jaegertracing/jaeger","slug":"cannot-resolve-query-interceptors-w","errorCode":null,"errorMessage":"cannot resolve query interceptors: %w","messagePattern":"cannot resolve query interceptors: %w","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/jaeger/internal/extension/jaegerquery/server.go","lineNumber":83,"sourceCode":"\ttelset := telemetry.FromOtelComponent(s.telset, host)\n\tif !s.config.EnableTracing {\n\t\ttelset.TracerProvider = nooptrace.NewTracerProvider()\n\t}\n\ttelset.Metrics = telset.Metrics.\n\t\tNamespace(metrics.NSOptions{Name: \"jaeger\"}).\n\t\tNamespace(metrics.NSOptions{Name: \"query\"})\n\ttf, err := jaegerstorage.GetTraceStoreFactory(s.config.Storage.TracesPrimary, host)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"cannot find factory for trace storage %s: %w\", s.config.Storage.TracesPrimary, err)\n\t}\n\ttraceReader, err := tf.CreateTraceReader()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"cannot create trace reader: %w\", err)\n\t}\n\n\tinterceptors, err := queryinterceptor.Resolve(host, s.config.QueryInterceptors)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"cannot resolve query interceptors: %w\", err)\n\t}\n\n\tdf, ok := tf.(depstore.Factory)\n\tif !ok {\n\t\treturn fmt.Errorf(\"cannot find factory for dependency storage %s: %w\", s.config.Storage.TracesPrimary, err)\n\t}\n\tdepReader, err := df.CreateDependencyReader()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"cannot create dependencies reader: %w\", err)\n\t}\n\n\topts := querysvc.QueryServiceOptions{\n\t\tMaxClockSkewAdjust: s.config.MaxClockSkewAdjust,\n\t\tMaxTraceSize:       s.config.MaxTraceSize,\n\t\tInterceptors:       interceptors,\n\t}\n\tif err := s.addArchiveStorage(&opts, host); err != nil {\n\t\treturn err","sourceCodeStart":65,"sourceCodeEnd":101,"githubUrl":"https://github.com/jaegertracing/jaeger/blob/806f4447841ecdb60519f408b004a599d515f437/cmd/jaeger/internal/extension/jaegerquery/server.go#L65-L101","documentation":"Start resolves the configured query interceptors (queryinterceptor.Resolve) against the component host. Interceptors are declared extension dependencies; if a configured interceptor extension is not present or fails its contract, Resolve returns an error wrapped as 'cannot resolve query interceptors'.","triggerScenarios":"config.QueryInterceptors lists an extension ID that is not started/registered in the host, or a registered extension does not implement the query interceptor interface.","commonSituations":"Adding an interceptor to the query config but forgetting to declare/start its extension; interceptor extension failed during its own Start; version mismatch where the extension no longer implements the expected interface.","solutions":["Ensure every ID in query.interceptors is present in the collector config and started successfully","Check that the interceptor extension implements the expected queryinterceptor interface (version alignment between jaeger components)","Inspect the interceptor extension's own startup logs for its failure","Remove the interceptor entry if it is not needed"],"exampleFix":"// before\njaeger_query:\n  interceptors: [my_interceptor]  # extension not configured\n// after\nextensions:\n  my_interceptor: {}\n  jaeger_query:\n    interceptors: [my_interceptor]","handlingStrategy":"validation","validationCode":"// Ensure every configured interceptor is a declared, started extension\nfor _, id := range cfg.QueryInterceptors {\n\tif !declaredInConfig(id, cfg.Extensions) {\n\t\treturn fmt.Errorf(\"interceptor %s not configured under extensions\", id)\n\t}\n}","typeGuard":null,"tryCatchPattern":"if err := ext.Start(ctx, host); err != nil {\n\tif strings.Contains(err.Error(), \"cannot resolve query interceptors\") {\n\t\tlog.Fatalf(\"interceptor resolve failed: %v — check extensions and versions\", err)\n\t}\n\treturn err\n}","preventionTips":["Declare every interceptor in Dependencies()/extensions config before referencing it","Keep all jaeger components on the same release version","Check the interceptor extension's startup logs when resolution fails","Remove unused interceptor entries from config"],"tags":["go","config","interceptors","otel-collector"],"backgroundTag":"extension-dependency-not-found","analyzedSha":"806f4447841ecdb60519f408b004a599d515f437","analyzedAt":"2026-09-01T02:39:22.140Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T05:18:18.240Z"}