{"record":{"id":"f50af3da03c4663f","repo":"quarkusio/quarkus","slug":"unable-to-find-redis-host-provider-identified-with","errorCode":null,"errorMessage":"Unable to find redis host provider identified with \" + name","messagePattern":"Unable to find redis host provider identified with \" \\+ name","errorType":"exception","errorClass":"ConfigurationException","httpStatus":null,"severity":"error","filePath":"extensions/redis-client/runtime/src/main/java/io/quarkus/redis/runtime/client/VertxRedisClientFactory.java","lineNumber":238,"sourceCode":"        tcp.secureTransportProtocols().ifPresent(net::setEnabledSecureTransportProtocols);\n        tcp.trafficClass().ifPresent(net::setTrafficClass);\n        tcp.noDelay().ifPresent(net::setTcpNoDelay);\n        tcp.cork().ifPresent(net::setTcpCork);\n        tcp.keepAlive().ifPresent(net::setTcpKeepAlive);\n        tcp.fastOpen().ifPresent(net::setTcpFastOpen);\n        tcp.quickAck().ifPresent(net::setTcpQuickAck);\n        tcp.writeIdleTimeout().ifPresent(d -> net.setWriteIdleTimeout((int) d.toSeconds()));\n\n        return net;\n    }\n\n    public static RedisHostsProvider findProvider(String name) {\n        ArcContainer container = Arc.container();\n        InjectableInstance<RedisHostsProvider> providers;\n        if (name != null) {\n            providers = container.select(RedisHostsProvider.class, Identifier.Literal.of(name));\n            if (providers.isUnsatisfied()) {\n                throw new ConfigurationException(\"Unable to find redis host provider identified with \" + name);\n            }\n        } else {\n            providers = container.select(RedisHostsProvider.class);\n            if (providers.isUnsatisfied()) {\n                throw new ConfigurationException(\"Unable to find redis host provider\");\n            }\n        }\n\n        return providers.get();\n    }\n\n    private static void configureTLS(String name, RedisClientConfig config, TlsConfigurationRegistry tlsRegistry,\n            NetClientOptions net, List<URI> hosts) {\n        TlsConfiguration configuration = null;\n        boolean defaultTrustAll = false;\n\n        boolean tlsFromHosts = false;\n        for (URI uri : hosts) {","sourceCodeStart":220,"sourceCodeEnd":256,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/redis-client/runtime/src/main/java/io/quarkus/redis/runtime/client/VertxRedisClientFactory.java#L220-L256","documentation":"findProvider(name) looks up a RedisHostsProvider bean in the Arc CDI container by the @Identifier qualifier matching the configured quarkus.redis.host-provider-name. If no bean with that identifier exists (unsatisfied injection), a ConfigurationException naming the requested provider is thrown. This happens because hosts were delegated to a programmatic provider that cannot be resolved.","triggerScenarios":"At startup when quarkus.redis.host-provider-name is set to a name for which container.select(RedisHostsProvider.class, Identifier.Literal.of(name)) is unsatisfied.","commonSituations":"Typo in quarkus.redis.host-provider-name; provider bean missing @Identifier(name) annotation; provider bean not discovered because it is in a package not indexed/bean-defining-annotation annotated; bean annotated with a different qualifier type than @Identifier.","solutions":["Ensure a bean implements RedisHostsProvider and is annotated with @Identifier(\"<the name in quarkus.redis.host-provider-name>\").","Verify the property value exactly matches the @Identifier string (case-sensitive).","Confirm the provider class lives in a bean-archived package (annotated with a bean-defining annotation such as @ApplicationScoped)."],"exampleFix":"// before\n@ApplicationScoped\npublic class MyHostsProvider implements RedisHostsProvider { ... }\n# quarkus.redis.host-provider-name=my-provider\n\n// after\n@ApplicationScoped\n@Identifier(\"my-provider\")\npublic class MyHostsProvider implements RedisHostsProvider { ... }","handlingStrategy":"validation","validationCode":"String providerName = config.getOptionalValue(\"quarkus.redis.host-provider-name\", String.class).orElse(null);\nif (providerName != null && Arc.container().select(RedisHostsProvider.class, Identifier.Literal.of(providerName)).isUnsatisfied()) {\n    throw new IllegalStateException(\"No RedisHostsProvider bean with @Identifier(\" + providerName + \")\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep quarkus.redis.host-provider-name and the bean's @Identifier value in a shared constant.","Annotate provider beans with @ApplicationScoped so they are discovered.","Add a startup smoke test that instantiates the client in every environment."],"tags":["redis","quarkus","cdi","configuration"],"backgroundTag":"missing-cdi-bean","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"}