vitessio/vitess · warning
cannot find health for: %s
Error message
cannot find health for: %s
What it means
After filtering the health-check cache by cell/keyspace/tablet, if no matching tablet health entry is found the handler returns `cannot find health for: <itemPath>`. It means the requested scope matched zero tablets in the health cache, not that the request was malformed.
Source
Thrown at go/vt/vtgate/api.go:143
if tabletCacheStatus.Target.Keyspace == value {
filteredStatus = append(filteredStatus, tabletCacheStatus)
}
}
return filteredStatus, nil
}
case "tablet":
{
// Return a _specific tablet_
for _, tabletCacheStatus := range cacheStatus {
for _, tabletStats := range tabletCacheStatus.TabletsStats {
if tabletStats.Tablet.MysqlHostname == value {
return tabletStats, nil
}
}
}
}
}
return nil, fmt.Errorf("cannot find health for: %s", itemPath)
})
}
View on GitHub (pinned to 01a25a7d17)
Solutions
- Verify the cell/keyspace/tablet identifier exists (check with vtctldclient).
- Ensure vtgate has discovered the tablet (check tablet's health registration).
- Wait for discovery/restart vtgate if the cache is stale.
Example fix
// before curl /api/health/tablet/wrong-host // after curl /api/health/tablet/zone1-0000000100
Defensive patterns
Strategy: retry
Validate before calling
// Confirm the tablet/cell exists before querying health
alias := vtctldclient.GetTablet(host) // errors if unknown
if alias == nil { return fmt.Errorf("tablet %s not registered", host) } Try / catch
if strings.Contains(respBody, "cannot find health for") {
time.Sleep(2 * time.Second) // allow discovery
// re-check identifiers; then give up with a clear error
} Prevention
- Cross-check cell/keyspace/tablet names with vtctldclient first.
- Allow vtgate time to discover newly started tablets.
- Update dashboards when tablets are decommissioned.
When it happens
Trigger: Requesting health status for a cell, keyspace, or tablet hostname that has no entries in the vtgate health-check cache (tablet not serving, wrong cell/keyspace name, or tablet never registered).
Common situations: Typo in cell or tablet hostname; vtgate hasn't discovered the tablet yet; tablet decommissioned or keyspace absent; monitoring dashboards pointing at removed cells.
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
- value out of range
- the <tablet alias> argument is required for the RunHealthChe
- cell mode should be handled by the gateway, not the balancer
- both the dry-run mode and actual buffering is enabled. To av
- unix sockets are not supported on windows
AI-assisted analysis of vitessio/vitess@01a25a7d17 (2026-09-01).
Data as JSON: /api/errors/5f173ebe147238a4.
Report an issue: GitHub.