redis/jedis · error · JedisException
No BDB found matching host
Error message
No BDB found matching host '%s' for health check
What it means
LagAwareStrategy.doHealthCheck throws JedisException when the Redis Enterprise REST API returns a BDB list in which no database (BDB) matches the host being health-checked. The strategy cannot map the endpoint host to a database, so the health check aborts.
Solutions
- Verify the host used by the client config matches an endpoint host reported by the REST API (rladmin status / GET /bdbs)
- Refresh client configuration after database failover, migration, or recreation
- Ensure consistent hostname resolution (use the same FQDNs the cluster exposes, not raw IPs)
- Check that the correct REST API endpoint/credentials are configured so getBdbs() returns the intended cluster's databases
Example fix
// before config endpointHost = "10.0.0.5" // node IP, not an endpoint // after config endpointHost = "redis-12345.demo.fqdn.com" // matches BDB endpoint host
Defensive patterns
Strategy: retry
Validate before calling
List<BdbInfo> bdbs = redisRestAPI.getBdbs();
if (bdbs.stream().noneMatch(b -> b.matchesHost(dbHost))) { log.warn("Host {} not in any BDB endpoint; check config", dbHost); } Try / catch
try { healthCheck(); } catch (JedisException e) { if (e.getMessage().contains("No BDB found")) { log.warn("Endpoint/host mismatch in Redis Enterprise config: {}", e.getMessage()); /* refresh endpoints and retry */ } else { throw e; } } Prevention
- Keep client endpoint hosts in sync with the Redis Enterprise REST API after failover/migration
- Use the same FQDNs the cluster exposes, not raw node IPs
- Verify REST API cluster/credentials point at the right cluster
- Monitor for BDB topology changes and refresh multi-db config automatically
When it happens
Trigger: Health check runs against a Redis Enterprise cluster endpoint whose host is not present in any BDB's endpoints, e.g. checking a node/proxy host that hosts no endpoints for this database, or after the database was migrated/failed over and the endpoint list is stale.
Common situations: Multi-DB (MultiDbClient) setups where a configured host no longer belongs to the database; DNS/hostname mismatch (IP vs FQDN) between client config and REST API endpoint entries; databases recreated with different endpoint hosts while client config still lists old hosts.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- healthCheckStrategySupplier must not be null
- healthCheckStrategy must not be null
- Unexpected response code
- Health check timed out or failed for
- Availability check for
AI-assisted analysis of redis/jedis@6dac31d4c2 (2026-09-08).
Data as JSON: /api/errors/fcf72baded420a6b.
Report an issue: GitHub.
Appendix: source
Thrown at src/main/java/redis/clients/jedis/mcf/LagAwareStrategy.java:67
@Override
public int getDelayInBetweenProbes() {
return config.getDelayInBetweenProbes();
}
@Override
public HealthStatus doHealthCheck(Endpoint endpoint) {
try {
String bdb = bdbId;
if (bdb == null) {
// Try to find BDB that matches the database host
String dbHost = endpoint.getHost();
List<RedisRestAPI.BdbInfo> bdbs = redisRestAPI.getBdbs();
RedisRestAPI.BdbInfo matchingBdb = RedisRestAPI.BdbInfo.findMatchingBdb(bdbs, dbHost);
if (matchingBdb == null) {
String msg = String.format("No BDB found matching host '%s' for health check", dbHost);
log.warn(msg);
throw new JedisException(msg);
} else {
bdb = matchingBdb.getUid();
log.debug("Found matching BDB '{}' for host '{}'", bdb, dbHost);
bdbId = bdb;
}
}
if (this.config.isExtendedCheckEnabled()) {
// Use extended check with lag validation
if (redisRestAPI.checkBdbAvailability(bdb, true,
this.config.getAvailabilityLagTolerance().toMillis())) {
return HealthStatus.HEALTHY;
}
} else {
// Use standard datapath validation only
if (redisRestAPI.checkBdbAvailability(bdb, false)) {
return HealthStatus.HEALTHY;
}
}View on GitHub (pinned to 6dac31d4c2)