{"record":{"id":"99cdd7eb4cb4cd92","repo":"quarkusio/quarkus","slug":"httpbinderconfiguration-was-not-found","errorCode":null,"errorMessage":"HttpBinderConfiguration was not found","messagePattern":"HttpBinderConfiguration was not found","errorType":"exception","errorClass":"VertxException","httpStatus":null,"severity":"error","filePath":"extensions/micrometer/runtime/src/main/java/io/quarkus/micrometer/runtime/binder/vertx/VertxMeterBinderAdapter.java","lineNumber":72,"sourceCode":"    public VertxMetricsFactory getFactory() {\n        return this;\n    }\n\n    @Override\n    public VertxMetrics metrics(VertxOptions vertxOptions) {\n        return this;\n    }\n\n    @Override\n    public MetricsOptions newOptions() {\n        return this;\n    }\n\n    @Override\n    public HttpServerMetrics<?, ?> createHttpServerMetrics(final HttpServerConfig options,\n            final SocketAddress tcpLocalAddress, final SocketAddress localAddress) {\n        if (httpBinderConfiguration == null) {\n            throw new VertxException(\"HttpBinderConfiguration was not found\");\n        }\n        if (openTelemetryContextUnwrapper == null) {\n            throw new VertxException(\"OpenTelemetryContextUnwrapper was not found\");\n        }\n        if (httpBinderConfiguration.isServerEnabled()) {\n            log.debugf(\"Create HttpServerMetrics with options %s and address %s\", options, localAddress);\n            return new VertxHttpServerMetrics(Metrics.globalRegistry, httpBinderConfiguration, openTelemetryContextUnwrapper,\n                    options, longAdderGauges);\n        }\n        return null;\n    }\n\n    @Override\n    public HttpClientMetrics<?, ?> createHttpClientMetrics(HttpClientConfig config) {\n        if (httpBinderConfiguration == null) {\n            return null;\n        }\n        if (httpBinderConfiguration.isClientEnabled()) {","sourceCodeStart":54,"sourceCodeEnd":90,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/micrometer/runtime/src/main/java/io/quarkus/micrometer/runtime/binder/vertx/VertxMeterBinderAdapter.java#L54-L90","documentation":"Vert.x calls this adapter's createHttpServerMetrics when an HTTP server starts; VertxMeterBinderAdapter needs an injected HttpBinderConfiguration to know whether/what HTTP server metrics to collect. When that configuration is null the adapter cannot build metrics and throws VertxException. Null configuration means the micrometer HTTP binder was not wired by the build (e.g. the HTTP-related micrometer config was not produced at build time).","triggerScenarios":"Vert.x creates an HTTP server (e.g. quarkus-vertx-http or reactive routes) while the micrometer extension's HttpBinderConfiguration bean was absent — e.g. quarkus-micrometer present but the HTTP metrics binder not initialized, or the adapter constructed manually/partially in tests with httpBinderConfiguration left null.","commonSituations":"Using Vert.x HTTP server directly in an app where micrometer registry exists but HTTP binder config wasn't created (micrometer added but relevant HTTP extension versions mismatched); constructing VertxMeterBinderAdapter in unit tests without setting the config field; extension ordering/conditional build issues after upgrading quarkus-micrometer or vertx-http.","solutions":["Ensure quarkus-micrometer is properly paired with the HTTP extension in use and rebuild (mvn clean install) so the build step producing HttpBinderConfiguration runs","Check quarkus.micrometer.binder.http-server.enabled=true (or leave default) so the HTTP binder config is produced","If constructing VertxMeterBinderAdapter manually (tests), set httpBinderConfiguration before Vert.x creates server metrics","Verify no version mismatch between quarkus-vertx-http and quarkus-micrometer; align versions via the Quarkus BOM"],"exampleFix":"// before (manual construction in a test)\nVertxMeterBinderAdapter adapter = new VertxMeterBinderAdapter();\n// httpBinderConfiguration == null -> VertxException\n\n// after\nVertxMeterBinderAdapter adapter = new VertxMeterBinderAdapter();\nadapter.httpBinderConfiguration = HttpBinderConfiguration.activate(\n        true, false, List.of(), List.of());","handlingStrategy":"validation","validationCode":"if (adapter.httpBinderConfiguration == null) {\n    throw new IllegalStateException(\"Wire HttpBinderConfiguration before Vert.x creates server metrics\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    HttpServerMetrics<?, ?> m = adapter.createHttpServerMetrics(options, tcpAddr, localAddr);\n} catch (VertxException e) {\n    log.errorf(\"HTTP metrics binder misconfigured: %s\", e.getMessage());\n    throw e;\n}","preventionTips":["Keep quarkus-micrometer and the HTTP extension on the same Quarkus BOM version","Don't construct VertxMeterBinderAdapter manually without setting both configuration fields","Enable the HTTP binder explicitly: quarkus.micrometer.binder.http-server.enabled=true"],"tags":["quarkus","micrometer","vertx","http-metrics","null-config"],"backgroundTag":"missing-metrics-binder-configuration","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"}