{"record":{"id":"fcf72baded420a6b","repo":"redis/jedis","slug":"no-bdb-found-matching-host-s-for-health-check","errorCode":null,"errorMessage":"No BDB found matching host '%s' for health check","messagePattern":"No BDB found matching host '(.+?)' for health check","errorType":"exception","errorClass":"JedisException","httpStatus":null,"severity":"error","filePath":"src/main/java/redis/clients/jedis/mcf/LagAwareStrategy.java","lineNumber":67,"sourceCode":"  @Override\n  public int getDelayInBetweenProbes() {\n    return config.getDelayInBetweenProbes();\n  }\n\n  @Override\n  public HealthStatus doHealthCheck(Endpoint endpoint) {\n    try {\n      String bdb = bdbId;\n      if (bdb == null) {\n        // Try to find BDB that matches the database host\n        String dbHost = endpoint.getHost();\n        List<RedisRestAPI.BdbInfo> bdbs = redisRestAPI.getBdbs();\n        RedisRestAPI.BdbInfo matchingBdb = RedisRestAPI.BdbInfo.findMatchingBdb(bdbs, dbHost);\n\n        if (matchingBdb == null) {\n          String msg = String.format(\"No BDB found matching host '%s' for health check\", dbHost);\n          log.warn(msg);\n          throw new JedisException(msg);\n        } else {\n          bdb = matchingBdb.getUid();\n          log.debug(\"Found matching BDB '{}' for host '{}'\", bdb, dbHost);\n          bdbId = bdb;\n        }\n      }\n      if (this.config.isExtendedCheckEnabled()) {\n        // Use extended check with lag validation\n        if (redisRestAPI.checkBdbAvailability(bdb, true,\n          this.config.getAvailabilityLagTolerance().toMillis())) {\n          return HealthStatus.HEALTHY;\n        }\n      } else {\n        // Use standard datapath validation only\n        if (redisRestAPI.checkBdbAvailability(bdb, false)) {\n          return HealthStatus.HEALTHY;\n        }\n      }","sourceCodeStart":49,"sourceCodeEnd":85,"githubUrl":"https://github.com/redis/jedis/blob/6dac31d4c224fb3257c216f3985340c6f500cdcb/src/main/java/redis/clients/jedis/mcf/LagAwareStrategy.java#L49-L85","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"// before\nconfig endpointHost = \"10.0.0.5\"  // node IP, not an endpoint\n// after\nconfig endpointHost = \"redis-12345.demo.fqdn.com\"  // matches BDB endpoint host","handlingStrategy":"retry","validationCode":"List<BdbInfo> bdbs = redisRestAPI.getBdbs();\nif (bdbs.stream().noneMatch(b -> b.matchesHost(dbHost))) { log.warn(\"Host {} not in any BDB endpoint; check config\", dbHost); }","typeGuard":null,"tryCatchPattern":"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; } }","preventionTips":["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"],"tags":["redis-enterprise","health-check","multi-db","configuration","rest-api"],"backgroundTag":"resource-not-found","analyzedSha":"6dac31d4c224fb3257c216f3985340c6f500cdcb","analyzedAt":"2026-09-08T04:55:01.204Z","contentChangedAt":"2026-09-08T04:55:01.204Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}