vitessio/vitess · error
GetKeyspaces(cluster = %s): %w
Error message
GetKeyspaces(cluster = %s): %w
What it means
Cluster.GetSrvKeyspaces first lists all keyspaces via Vtctld.GetKeyspaces; if that RPC fails it wraps the error with the cluster ID. This is a transport/topo-level failure before any per-keyspace serving-tablet lookups begin (those produce error 864 instead).
Source
Thrown at go/vt/vtadmin/cluster/cluster.go:1270
}
wg.Wait()
if rec.HasErrors() {
return nil, rec.Error()
}
return keyspaces, nil
}
// GetSrvKeyspaces returns all SrvKeyspaces for all keyspaces in a cluster.
func (c *Cluster) GetSrvKeyspaces(ctx context.Context, cells []string) (map[string]*vtctldatapb.GetSrvKeyspacesResponse, error) {
span, ctx := trace.NewSpan(ctx, "Cluster.GetKeyspaces")
AnnotateSpan(c, span)
defer span.Finish()
keyspaces, err := c.Vtctld.GetKeyspaces(ctx, &vtctldatapb.GetKeyspacesRequest{})
if err != nil {
return nil, fmt.Errorf("GetKeyspaces(cluster = %s): %w", c.ID, err)
}
var (
m sync.Mutex
wg sync.WaitGroup
rec concurrency.AllErrorRecorder
srvKeyspaces = make(map[string]*vtctldatapb.GetSrvKeyspacesResponse, len(keyspaces.Keyspaces))
)
for _, keyspace := range keyspaces.Keyspaces {
wg.Add(1)
go func(keyspace *vtctldatapb.Keyspace) {
defer wg.Done()
srv_keyspaces, err := c.Vtctld.GetSrvKeyspaces(ctx, &vtctldatapb.GetSrvKeyspacesRequest{Keyspace: keyspace.Name, Cells: cells})
if err != nil {
rec.RecordError(fmt.Errorf("GetSrvKeyspaces(keyspace = %s): %w", keyspace.Name, err))
returnView on GitHub (pinned to 01a25a7d17)
Solutions
- Check the wrapped cause for the concrete RPC/topo error
- Verify vtctld is running and reachable from vtadmin (address, port, TLS)
- Check topo server health (etcd/zk)
- Retry once infrastructure is restored
Defensive patterns
Strategy: try-catch
Validate before calling
// Go: verify vtctld reachability before GetSrvKeyspaces
if err := c.Vtctld.Ping(ctx); err != nil {
return fmt.Errorf("vtctld unreachable: %w", err)
} Try / catch
srv, err := c.GetSrvKeyspaces(ctx, req)
if err != nil {
if strings.Contains(err.Error(), "GetKeyspaces(cluster =") {
// vtctld/topo-level failure: check infra before retrying
}
return err
} Prevention
- Monitor vtctld liveness from vtadmin
- Verify vtctld address/TLS config on deploy
- Handle topo outages with circuit-breaker behavior
- Distinguish GetKeyspace-level vs per-keyspace failures in logs
When it happens
Trigger: Calling cluster.GetSrvKeyspaces(ctx, req) when the vtctld GetKeyspaces RPC fails: vtctld unreachable, topo unavailable, or request context cancelled.
Common situations: vtctld process down or restarting; network partition between vtadmin and vtctld; topo (etcd/zookeeper) outage; vtadmin pointed at the wrong vtctld address.
Related errors
- GetKeyspaces(cluster = %s) failed: %w
- failed to GetCellInfoNames: %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/d6514026bad470e0.
Report an issue: GitHub.