{"record":{"id":"44828c750b71a817","repo":"jaegertracing/jaeger","slug":"unrecognized-exporter-type-s","errorCode":null,"errorMessage":"unrecognized exporter type %s","messagePattern":"unrecognized exporter type (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/tracegen/main.go","lineNumber":144,"sourceCode":"\tvar exporter sdktrace.SpanExporter\n\tvar err error\n\tswitch exporterType {\n\tcase \"jaeger\":\n\t\treturn nil, errors.New(\"jaeger exporter is no longer supported, please use otlp\")\n\tcase \"otlp\", \"otlp-http\":\n\t\tclient := otlptracehttp.NewClient(\n\t\t\totlptracehttp.WithInsecure(),\n\t\t)\n\t\texporter, err = otlptrace.New(context.Background(), client)\n\tcase \"otlp-grpc\":\n\t\tclient := otlptracegrpc.NewClient(\n\t\t\totlptracegrpc.WithInsecure(),\n\t\t)\n\t\texporter, err = otlptrace.New(context.Background(), client)\n\tcase \"stdout\":\n\t\texporter, err = stdouttrace.New()\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unrecognized exporter type %s\", exporterType)\n\t}\n\treturn exporter, err\n}\n","sourceCodeStart":126,"sourceCodeEnd":148,"githubUrl":"https://github.com/jaegertracing/jaeger/blob/806f4447841ecdb60519f408b004a599d515f437/cmd/tracegen/main.go#L126-L148","documentation":"createOtelExporter (cmd/tracegen/main.go:144) returns this error when the exporterType flag value does not match any supported switch case: otlp, otlp-http, otlp-grpc, or stdout. The legacy \"jaeger\" exporter is rejected separately with its own message because it was removed. tracegen fails fast at startup with this message plus the unrecognized value.","triggerScenarios":"Running tracegen with an exporter value that is not exactly one of: otlp, otlp-http, otlp-grpc, stdout (case-sensitive exact match). Examples: --exporter jaeger-remote, --exporter OTLP (uppercase), --exporter otlpgrpc (missing hyphen), --exporter prometheus.","commonSituations":"Users following older Jaeger docs or blog posts referencing the removed jaeger exporter; shell scripts or Makefiles with a stale exporter name; confusion between otlp-grpc vs otlpgrpc or otlp-http vs otlphttp.","solutions":["Use one of the supported values: otlp or otlp-http (HTTP client), otlp-grpc (gRPC client), or stdout for console output","If you intended the legacy jaeger exporter, switch to otlp/otlp-grpc — it was removed from tracegen","Point the exporter at a collector that accepts OTLP (e.g. set OTEL_EXPORTER_OTLP_ENDPOINT) when using otlp* types"],"exampleFix":"// before\n// go run ./cmd/tracegen --exporter=jaeger-remote ...\n// after\n// go run ./cmd/tracegen --exporter=otlp-grpc ...","handlingStrategy":"validation","validationCode":"supported := map[string]bool{\"otlp\": true, \"otlp-http\": true, \"otlp-grpc\": true, \"stdout\": true}\nif !supported[exporterType] {\n\treturn fmt.Errorf(\"exporter must be one of otlp, otlp-http, otlp-grpc, stdout; got %q\", exporterType)\n}","typeGuard":null,"tryCatchPattern":"exporter, err := createOtelExporter(exporterType)\nif err != nil {\n\tif strings.Contains(err.Error(), \"unrecognized exporter type\") {\n\t\tflag.Usage() // print supported values and exit\n\t}\n\tos.Exit(1)\n}","preventionTips":["Make the exporter flag a choice-enum in CLI tooling so invalid values are rejected by the flag parser","Copy flag values from the current repo docs, not older posts referencing the removed jaeger exporter","Remember values are case-sensitive: use lowercase otlp-grpc, not OTLP-GRPC or otlpgrpc","Default to stdout for local smoke tests, otlp-grpc against a real collector"],"tags":["cli","configuration","otel","tracegen"],"backgroundTag":"invalid-config-value","analyzedSha":"806f4447841ecdb60519f408b004a599d515f437","analyzedAt":"2026-09-01T02:39:22.140Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T05:18:18.240Z"}