vitessio/vitess · error
failed to GetCellInfoNames: %w
Error message
failed to GetCellInfoNames: %w
What it means
The GetCellInfoNames vtctld RPC used to enumerate cell names failed. It is wrapped as 'failed to GetCellInfoNames' and aborts GetCellInfos since cell names are required to fan out the per-cell lookups. Root cause is almost always topology/vtctld availability.
Source
Thrown at go/vt/vtadmin/cluster/cluster.go:1060
// Note: specifying a cell name that does not exist in the cluster fails the
// overall request.
//
// If req.NamesOnly is set, each ClusterCellInfo will only contain the Cluster
// and Name fields. req.Cells takes precedence over this option.
func (c *Cluster) GetCellInfos(ctx context.Context, req *vtadminpb.GetCellInfosRequest) ([]*vtadminpb.ClusterCellInfo, error) {
span, ctx := trace.NewSpan(ctx, "Cluster.GetCellInfos")
defer span.Finish()
names := req.Cells
if len(names) == 0 {
if err := c.topoReadPool.Acquire(ctx); err != nil {
return nil, fmt.Errorf("GetCellInfoNames() failed to acquire topoReadPool: %w", err)
}
resp, err := c.Vtctld.GetCellInfoNames(ctx, &vtctldatapb.GetCellInfoNamesRequest{})
c.topoReadPool.Release()
if err != nil {
return nil, fmt.Errorf("failed to GetCellInfoNames: %w", err)
}
names = resp.Names
}
namesOnly := req.NamesOnly
if namesOnly && len(req.Cells) > 0 {
log.Warn("Cluster.GetCellInfos: req.Cells and req.NamesOnly set, ignoring NamesOnly")
namesOnly = false
}
span.Annotate("names_only", namesOnly)
span.Annotate("cells", req.Cells) // deliberately not the cellnames we (maybe) fetched above
cpb := c.ToProto()
infos := make([]*vtadminpb.ClusterCellInfo, 0, len(names))
if namesOnly {
for _, name := range names {View on GitHub (pinned to 01a25a7d17)
Solutions
- Check vtctld and topology service health
- Inspect the wrapped root-cause error and vtctld logs
- Retry the request
- Verify vtadmin's topology connection settings for this cluster
Defensive patterns
Strategy: try-catch
Validate before calling
conn, err := net.DialTimeout("tcp", vtctldAddr, 2*time.Second)
if err != nil { return fmt.Errorf("vtctld unreachable, GetCellInfoNames will fail: %w", err) } Try / catch
cells, err := cluster.GetCellInfos(ctx, req)
if err != nil && strings.Contains(err.Error(), "GetCellInfoNames") {
// topology/vtctld outage: surface to user, check topo health before retry
return fmt.Errorf("cannot enumerate cells: %w", err)
} Prevention
- Monitor etcd/zk topology health
- Alert on vtctld liveness
- Verify topology credentials/permissions
- Retry transient topo failures with backoff
When it happens
Trigger: GetCellInfos called with empty req.Cells and c.Vtctld.GetCellInfoNames returning an error — vtctld down, topology store unhealthy, or ctx deadline hit during the RPC.
Common situations: etcd/zk topology cluster down or election issues; vtctld restarted; network partition; permission problems reading the topology cells path.
Related errors
- GetKeyspaces(cluster = %s) failed: %w
- GetKeyspaces(cluster = %s): %w
- invalid key:value pair
- parse error
- failed to delete tablet: %w
AI-assisted analysis of vitessio/vitess@01a25a7d17 (2026-09-01).
Data as JSON: /api/errors/0be9b9001804b946.
Report an issue: GitHub.