quarkusio/quarkus · error · ConfigurationException

Unable to find redis host provider identified with " + name

Error message

Unable to find redis host provider identified with " + name

What it means

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.

Source

Thrown at extensions/redis-client/runtime/src/main/java/io/quarkus/redis/runtime/client/VertxRedisClientFactory.java:238

        tcp.secureTransportProtocols().ifPresent(net::setEnabledSecureTransportProtocols);
        tcp.trafficClass().ifPresent(net::setTrafficClass);
        tcp.noDelay().ifPresent(net::setTcpNoDelay);
        tcp.cork().ifPresent(net::setTcpCork);
        tcp.keepAlive().ifPresent(net::setTcpKeepAlive);
        tcp.fastOpen().ifPresent(net::setTcpFastOpen);
        tcp.quickAck().ifPresent(net::setTcpQuickAck);
        tcp.writeIdleTimeout().ifPresent(d -> net.setWriteIdleTimeout((int) d.toSeconds()));

        return net;
    }

    public static RedisHostsProvider findProvider(String name) {
        ArcContainer container = Arc.container();
        InjectableInstance<RedisHostsProvider> providers;
        if (name != null) {
            providers = container.select(RedisHostsProvider.class, Identifier.Literal.of(name));
            if (providers.isUnsatisfied()) {
                throw new ConfigurationException("Unable to find redis host provider identified with " + name);
            }
        } else {
            providers = container.select(RedisHostsProvider.class);
            if (providers.isUnsatisfied()) {
                throw new ConfigurationException("Unable to find redis host provider");
            }
        }

        return providers.get();
    }

    private static void configureTLS(String name, RedisClientConfig config, TlsConfigurationRegistry tlsRegistry,
            NetClientOptions net, List<URI> hosts) {
        TlsConfiguration configuration = null;
        boolean defaultTrustAll = false;

        boolean tlsFromHosts = false;
        for (URI uri : hosts) {

View on GitHub (pinned to e1c734241f)

Solutions

  1. Ensure a bean implements RedisHostsProvider and is annotated with @Identifier("<the name in quarkus.redis.host-provider-name>").
  2. Verify the property value exactly matches the @Identifier string (case-sensitive).
  3. Confirm the provider class lives in a bean-archived package (annotated with a bean-defining annotation such as @ApplicationScoped).

Example fix

// before
@ApplicationScoped
public class MyHostsProvider implements RedisHostsProvider { ... }
# quarkus.redis.host-provider-name=my-provider

// after
@ApplicationScoped
@Identifier("my-provider")
public class MyHostsProvider implements RedisHostsProvider { ... }
Defensive patterns

Strategy: validation

Validate before calling

String providerName = config.getOptionalValue("quarkus.redis.host-provider-name", String.class).orElse(null);
if (providerName != null && Arc.container().select(RedisHostsProvider.class, Identifier.Literal.of(providerName)).isUnsatisfied()) {
    throw new IllegalStateException("No RedisHostsProvider bean with @Identifier(" + providerName + ")");
}

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/f50af3da03c4663f. Report an issue: GitHub.