{"record":{"id":"8e33f4bd1f27b9bc","repo":"quarkusio/quarkus","slug":"unable-to-find-the-tls-configuration-for-the-re","errorCode":null,"errorMessage":"Unable to find the TLS configuration '' for the reactive datasource.","messagePattern":"Unable to find the TLS configuration '' for the reactive datasource\\.","errorType":"exception","errorClass":"io.quarkus.runtime.configuration.ConfigurationException","httpStatus":null,"severity":"error","filePath":"extensions/reactive-datasource/runtime/src/main/java/io/quarkus/reactive/datasource/runtime/ReactivePoolUtil.java","lineNumber":177,"sourceCode":"    /**\n     * Apply SSL/TLS, reconnect, and hostname verification settings from the generic reactive\n     * datasource config to connect options.\n     * <p>\n     * When a named TLS configuration is set via {@code tls-configuration-name}, it takes precedence\n     * over manual SSL properties (trust-certificate-*, key-certificate-*, trust-all, hostname-verification-algorithm).\n     */\n    public static void configureSsl(SqlConnectOptions connectOptions,\n            DataSourceReactiveRuntimeConfig config,\n            TlsConfigurationRegistry tlsRegistry) {\n        if (config.tlsConfigurationName().isPresent()) {\n            String tlsConfigName = config.tlsConfigurationName().get();\n            if (tlsRegistry == null) {\n                throw new ConfigurationException(\n                        \"TLS configuration name '\" + tlsConfigName + \"' is set but the TLS registry is not available.\");\n            }\n            Optional<TlsConfiguration> maybeTlsConfig = tlsRegistry.get(tlsConfigName);\n            if (maybeTlsConfig.isEmpty()) {\n                throw new ConfigurationException(\"Unable to find the TLS configuration '\" + tlsConfigName\n                        + \"' for the reactive datasource.\");\n            }\n            TlsConfiguration tlsConfig = maybeTlsConfig.get();\n            ClientSSLOptions sslOptions = tlsConfig.getClientSSLOptions();\n            if (sslOptions == null) {\n                sslOptions = new ClientSSLOptions();\n            }\n            connectOptions.setSslOptions(sslOptions);\n\n            if (hasManualSslProperties(config)) {\n                log.warn(\"Manual SSL properties (trust-certificate-*, key-certificate-*, trust-all,\"\n                        + \" hostname-verification-algorithm) are ignored when a named TLS configuration\"\n                        + \" (tls-configuration-name=\" + tlsConfigName + \") is set.\");\n            }\n        } else {\n            configureManualSsl(connectOptions, config);\n        }\n","sourceCodeStart":159,"sourceCodeEnd":195,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/reactive-datasource/runtime/src/main/java/io/quarkus/reactive/datasource/runtime/ReactivePoolUtil.java#L159-L195","documentation":"configureSsl() looks up the named TLS configuration in TlsConfigurationRegistry. When quarkus.datasource.\"x\".reactive.tls-configuration-name refers to a name that no Tls @ConfigMapping (quarkus.tls.<name>.*) defines, it throws ConfigurationException naming the missing configuration.","triggerScenarios":"quarkus.datasource.\"<name>\".reactive.tls-configuration-name=<value> set, registry available, but no quarkus.tls.<value>.* properties exist; or the TLS config is defined in a profile/environment not active at startup.","commonSituations":"Typo in the TLS configuration name; renaming the quarkus.tls.\"name\" block without updating datasource references; config imported only in a non-active profile (e.g. only in %prod).","solutions":["Define the named TLS configuration, e.g. quarkus.tls.key-store.p12.path=... under the same name referenced by the datasource","Fix typos in quarkus.datasource.\"<name>\".reactive.tls-configuration-name","Verify the quarkus.tls.\"<name>\" block is present in the active profile (not only %prod/%dev)","Use the default registry name if you only need one config: reference the default TLS config instead of a custom name"],"exampleFix":"// before\nquarkus.datasource.db.reactive.tls-configuration-name=dbtls\n// (no matching block)\n// after\nquarkus.datasource.db.reactive.tls-configuration-name=dbtls\nquarkus.tls.dbtls.key-store.p12.path=certs/db.p12\nquarkus.tls.dbtls.key-store.p12.password=secret","handlingStrategy":"validation","validationCode":"String name = config.tlsConfigurationName().orElse(null);\nif (name != null && !configRootNames.contains(\"quarkus.tls.\\\"\" + name + \"\\\"\")) {\n    throw new IllegalStateException(\"No quarkus.tls.\" + name + \" configuration defined\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    ReactivePoolUtil.configureSsl(opts, config, registry);\n} catch (ConfigurationException e) {\n    log.errorf(\"Define quarkus.tls.%s.* properties for the datasource\", referencedName);\n    throw e;\n}","preventionTips":["Keep the tls-configuration-name value and quarkus.tls.\"name\" block in sync","Grep application.properties for tls-configuration-name and verify each has a matching block","Confirm blocks are in the active profile"],"tags":["quarkus","tls","configuration","reactive-datasource"],"backgroundTag":"missing-tls-config","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"}