{"record":{"id":"16726a1445c0537f","repo":"quarkusio/quarkus","slug":"unrecognized-type-this-is-a-programming-bug-in-th","errorCode":null,"errorMessage":"Unrecognized type, this is a programming bug in the OpenTelemetry SDK","messagePattern":"Unrecognized type, this is a programming bug in the OpenTelemetry SDK","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/exporter/otlp/sender/VertxGrpcSender.java","lineNumber":425,"sourceCode":"                            }\n                        }\n                    }\n\n                    @SuppressForbidden(reason = \"The use of ThrottlingLogger mandates the use of java.util.logging\")\n                    private void logUnimplemented(Logger logger, String type, String fullErrorMessage) {\n                        String envVar;\n                        switch (type) {\n                            case \"span\":\n                                envVar = \"OTEL_TRACES_EXPORTER\";\n                                break;\n                            case \"metric\":\n                                envVar = \"OTEL_METRICS_EXPORTER\";\n                                break;\n                            case \"log\":\n                                envVar = \"OTEL_LOGS_EXPORTER\";\n                                break;\n                            default:\n                                throw new IllegalStateException(\n                                        \"Unrecognized type, this is a programming bug in the OpenTelemetry SDK\");\n                        }\n\n                        logger.log(\n                                Level.WARNING,\n                                \"Failed to export \"\n                                        + type\n                                        + \"s. Server responded with UNIMPLEMENTED. \"\n                                        + \"This usually means that your collector is not configured with an otlp \"\n                                        + \"receiver in the \\\"pipelines\\\" section of the configuration. \"\n                                        + \"If export is not desired and you are using OpenTelemetry autoconfiguration or the javaagent, \"\n                                        + \"disable export by setting \"\n                                        + envVar\n                                        + \"=none. \"\n                                        + \"Full error message: \"\n                                        + fullErrorMessage);\n                    }\n","sourceCodeStart":407,"sourceCodeEnd":443,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/exporter/otlp/sender/VertxGrpcSender.java#L407-L443","documentation":"In `VertxGrpcSender.logAppropriateWarning`, the signal type string coming from the OpenTelemetry SDK is mapped to its `OTEL_<SIGNAL>_EXPORTER` environment variable name for a warning message. If the type is none of the known signals, the code assumes an SDK-internal bug and throws IllegalStateException. It is not triggered by user configuration.","triggerScenarios":"The OTel SDK hands VertxGrpcSender an export-signal type string outside the known set — only possible with an SDK/extension version mismatch or a genuine SDK defect.","commonSituations":"Mixing incompatible versions of `opentelemetry-sdk` and `quarkus-opentelemetry` on the classpath; custom instrumentation calling sender internals with an unexpected type; upstream SDK adding a new signal the Quarkus exporter doesn't know yet.","solutions":["Align OpenTelemetry SDK versions with those managed by your Quarkus BOM (`quarkus update` or dependency management)","Check for conflicting manually-declared opentelemetry-* dependencies in your pom/build file","Reproduce with a minimal app and report to Quarkus/OpenTelemetry if it persists"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// Enforce dependency alignment before build (Maven Enforcer)\n// mvn enforcer:enforce -Drules=requireUpperBoundDeps","typeGuard":null,"tryCatchPattern":"try {\n    // configure/export via OTel\n} catch (IllegalStateException e) {\n    if (String.valueOf(e.getMessage()).contains(\"programming bug in the OpenTelemetry SDK\")) {\n        LOG.error(\"Likely OTel SDK / quarkus-opentelemetry version mismatch\", e);\n    }\n}","preventionTips":["Let the Quarkus BOM manage all opentelemetry-* versions; don't pin your own","Run `quarkus update` when upgrading rather than mixing versions","Check `mvn dependency:tree | grep opentelemetry` for conflicts"],"tags":["opentelemetry","sdk-internal","grpc","exporter"],"backgroundTag":"sdk-version-mismatch","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}