vitessio/vitess · warning
GetCellInfo(%s) failed to acquire topoReadPool: %w
Error message
GetCellInfo(%s) failed to acquire topoReadPool: %w
What it means
For each requested cell, GetCellInfos spawns a goroutine gated by topoReadPool. If Acquire fails, that cell's info is skipped and recorded as this error. It reflects concurrency-limit/context pressure before any vtctld call happens.
Source
Thrown at go/vt/vtadmin/cluster/cluster.go:1100
})
}
return infos, nil
}
var (
m sync.Mutex
wg sync.WaitGroup
rec concurrency.AllErrorRecorder
)
for _, name := range names {
wg.Add(1)
go func(name string) {
defer wg.Done()
if err := c.topoReadPool.Acquire(ctx); err != nil {
rec.RecordError(fmt.Errorf("GetCellInfo(%s) failed to acquire topoReadPool: %w", name, err))
return
}
resp, err := c.Vtctld.GetCellInfo(ctx, &vtctldatapb.GetCellInfoRequest{
Cell: name,
})
c.topoReadPool.Release()
if err != nil {
rec.RecordError(fmt.Errorf("GetCellInfo(%s) failed: %w", name, err))
return
}
m.Lock()
defer m.Unlock()
infos = append(infos, &vtadminpb.ClusterCellInfo{
Cluster: cpb,
Name: name,
CellInfo: resp.CellInfo,View on GitHub (pinned to 01a25a7d17)
Solutions
- Retry with a longer timeout
- Increase topoReadPool capacity
- Request fewer cells per call
- Check for slow GetCellInfo RPCs monopolizing pool slots
Defensive patterns
Strategy: retry
Try / catch
cells, err := cluster.GetCellInfos(ctx, req)
if err != nil && strings.Contains(err.Error(), "topoReadPool") {
// back off, retry with fewer cells or longer timeout
} Prevention
- Request cells in smaller batches
- Increase topoReadPool capacity
- Use deadlines that exceed pool-wait + RPC time
- Smooth out bursty cell-info traffic
When it happens
Trigger: Requesting many cells while topoReadPool is saturated and ctx is canceled or times out waiting on Acquire for a given cell name.
Common situations: Requests spanning all cells in a multi-region deployment; small topo pool; aggressive client timeouts; thundering-herd of concurrent vtadmin requests.
Related errors
- GetWorkflows(keyspace = %s, active_only = %v) failed to acqu
- GetBackups(%s/%s) failed to acquire backupReadPool: %w
- GetKeyspace(%s) failed to acquire topoReadPool: %w
- GetKeyspaces() failed to acquire topoReadPool: %w
- invalid choice for enum
AI-assisted analysis of vitessio/vitess@01a25a7d17 (2026-09-01).
Data as JSON: /api/errors/c8cf8e5725a786bb.
Report an issue: GitHub.