{"record":{"id":"e081ab508c37592f","repo":"quarkusio/quarkus","slug":"tls-configuration-was-specified-but-no-tls-con","errorCode":null,"errorMessage":"TLS configuration '' was specified, but no TLS configuration registry could be found.","messagePattern":"TLS configuration '' was specified, but no TLS configuration registry could be found\\.","errorType":"validation","errorClass":"ConfigurationException","httpStatus":null,"severity":"critical","filePath":"extensions/smallrye-graphql-client/runtime/src/main/java/io/quarkus/smallrye/graphql/client/runtime/SmallRyeGraphQLClientRecorder.java","lineNumber":260,"sourceCode":"        if (Arc.container() != null) {\n            TlsConfigurationRegistry tlsConfigurationRegistry = Arc.container().select(TlsConfigurationRegistry.class).orNull();\n            if (tlsConfigurationRegistry != null) {\n                if (quarkusConfig.tlsConfigurationName().isPresent()) {\n                    // explicit TLS config\n                    Optional<TlsConfiguration> namedConfig = TlsConfiguration.from(tlsConfigurationRegistry,\n                            quarkusConfig.tlsConfigurationName());\n                    if (namedConfig.isEmpty()) {\n                        throw new ConfigurationException(\"TLS configuration '\" + quarkusConfig.tlsConfigurationName().get()\n                                + \"' was specified, but it does not exist.\");\n                    }\n                    return namedConfig;\n                } else {\n                    // no explicit TLS config\n                    return tlsConfigurationRegistry.getDefault();\n                }\n            } else {\n                if (quarkusConfig.tlsConfigurationName().isPresent()) {\n                    throw new ConfigurationException(\"TLS configuration '\" + quarkusConfig.tlsConfigurationName().get()\n                            + \"' was specified, but no TLS configuration registry could be found.\");\n                }\n            }\n        }\n        return Optional.empty();\n    }\n\n    private Optional<ProxyConfiguration> resolveProxyConfiguration(GraphQLClientConfig clientConfig) {\n        if (Arc.container() != null) {\n            ProxyConfigurationRegistry proxyConfigurationRegistry = Arc.container().select(ProxyConfigurationRegistry.class)\n                    .orNull();\n            if (proxyConfigurationRegistry != null) {\n                if (clientConfig.proxyConfigurationName().isPresent()) {\n                    // explicit proxy config\n                    Optional<ProxyConfiguration> namedConfig = proxyConfigurationRegistry\n                            .get(clientConfig.proxyConfigurationName());\n                    if (namedConfig.isEmpty()) {\n                        throw new ConfigurationException(\"Proxy configuration '\" + clientConfig.proxyConfigurationName().get()","sourceCodeStart":242,"sourceCodeEnd":278,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/smallrye-graphql-client/runtime/src/main/java/io/quarkus/smallrye/graphql/client/runtime/SmallRyeGraphQLClientRecorder.java#L242-L278","documentation":"When a TLS configuration name is specified for a GraphQL client but the TLS registry bean itself is absent, the recorder cannot resolve any TLS configuration and throws this ConfigurationException. The TLS registry only exists when the TLS registry support is on the classpath and initialized; without it, a named configuration can never be resolved, so startup fails deliberately.","triggerScenarios":"quarkus.smallrye-graphql-client.<client>.tls-configuration-name is set, but tlsConfigurationRegistry is null — i.e. the TLS registry support (quarkus.tls.* machinery) is not available in this application build.","commonSituations":"Depending only on raw SmallRye GraphQL client libraries instead of the quarkus-smallrye-graphql-client extension; an old Quarkus version predating the TLS registry; a custom/trimmed build excluding TLS registry support while config still references a named TLS configuration.","solutions":["Ensure the quarkus-smallrye-graphql-client extension (which brings TLS registry support) is a project dependency","Upgrade Quarkus so the centralized TLS registry (quarkus.tls.*) is available","Remove quarkus.smallrye-graphql-client.<client>.tls-configuration-name and configure TLS another way (e.g. per-client keystore/truststore properties if available)"],"exampleFix":"// before (pom.xml) — raw library without TLS registry\n<dependency>\n  <groupId>io.smallrye</groupId>\n  <artifactId>smallrye-graphql-client</artifactId>\n</dependency>\n\n// after\n<dependency>\n  <groupId>io.quarkus</groupId>\n  <artifactId>quarkus-smallrye-graphql-client</artifactId>\n</dependency>","handlingStrategy":"validation","validationCode":"// Verify the extension providing the TLS registry is on the classpath\nClass.forName(\"io.quarkus.tls.TlsConfigurationRegistry\", false,\n        Thread.currentThread().getContextClassLoader());","typeGuard":null,"tryCatchPattern":"try {\n    buildClientConfig();\n} catch (ConfigurationException e) {\n    if (e.getMessage().contains(\"no TLS configuration registry\")) {\n        throw new IllegalStateException(\"Add quarkus-smallrye-graphql-client / TLS registry support, or drop tls-configuration-name\", e);\n    }\n    throw e;\n}","preventionTips":["Always consume SmallRye GraphQL clients through the Quarkus extension, not raw SmallRye artifacts","Do not set tls-configuration-name in libraries usable outside Quarkus TLS-registry contexts","Pin to a Quarkus version that includes the unified TLS registry","Run a smoke startup test in CI that exercises client configuration"],"tags":["tls","configuration","startup-failure","quarkus"],"backgroundTag":"tls-configuration-not-found","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}