apache/druid · error · IllegalArgumentException
Invalid redis configuration. no redis server or cluster…
Error message
Invalid redis configuration. no redis server or cluster configured.
What it means
RedisCacheFactory.create fell through both configuration branches: no Redis cluster was configured and the standalone host is blank. Without either a cluster node list or a host, no cache client can be constructed, so the factory throws an IAE telling the operator to configure druid.cache.host or druid.cache.cluster.nodes.
Solutions
- Set druid.cache.host (and port) for standalone Redis, or druid.cache.cluster.nodes for Redis Cluster.
- Verify the cache type/extension config actually populated RedisCacheConfig (check property names and config loading).
- Fail fast at startup with this IAE is intended — fix configuration and restart.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at extensions-contrib/redis-cache/src/main/java/org/apache/druid/client/cache/RedisCacheFactory.java:85 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07).
Data as JSON: /api/errors/98a5f4f1d1b70acf.
Report an issue: GitHub.
Appendix: source
Thrown at extensions-contrib/redis-cache/src/main/java/org/apache/druid/client/cache/RedisCacheFactory.java:85
ConnectionPoolConfig poolConfig = new ConnectionPoolConfig();
poolConfig.setMaxTotal(config.getMaxTotalConnections());
poolConfig.setMaxIdle(config.getMaxIdleConnections());
poolConfig.setMinIdle(config.getMinIdleConnections());
JedisCluster cluster = new JedisCluster(
nodes,
buildClientConfig(config, 0),
config.getCluster().getMaxRedirection(),
poolConfig
);
return new RedisClusterCache(cluster, config);
} else {
if (StringUtils.isBlank(config.getHost())) {
throw new IAE("Invalid redis configuration. no redis server or cluster configured.");
}
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(config.getMaxTotalConnections());
poolConfig.setMaxIdle(config.getMaxIdleConnections());
poolConfig.setMinIdle(config.getMinIdleConnections());
return new RedisStandaloneCache(
new JedisPool(
poolConfig,
new HostAndPort(config.getHost(), config.getPort()),
buildClientConfig(config, config.getDatabase())
),
config
);
}
}
View on GitHub (pinned to 9b90983fd2)