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

  1. Retry with a longer timeout
  2. Increase topoReadPool capacity
  3. Request fewer cells per call
  4. 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

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


AI-assisted analysis of vitessio/vitess@01a25a7d17 (2026-09-01). Data as JSON: /api/errors/c8cf8e5725a786bb. Report an issue: GitHub.