{"record":{"id":"247c4fd6afe71bab","repo":"vitessio/vitess","slug":"getcellinfo-s-failed-w","errorCode":null,"errorMessage":"GetCellInfo(%s) failed: %w","messagePattern":"GetCellInfo\\((.+?)\\) failed: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"go/vt/vtadmin/cluster/cluster.go","lineNumber":1109,"sourceCode":"\t\trec concurrency.AllErrorRecorder\n\t)\n\n\tfor _, name := range names {\n\t\twg.Add(1)\n\t\tgo func(name string) {\n\t\t\tdefer wg.Done()\n\n\t\t\tif err := c.topoReadPool.Acquire(ctx); err != nil {\n\t\t\t\trec.RecordError(fmt.Errorf(\"GetCellInfo(%s) failed to acquire topoReadPool: %w\", name, err))\n\t\t\t\treturn\n\t\t\t}\n\t\t\tresp, err := c.Vtctld.GetCellInfo(ctx, &vtctldatapb.GetCellInfoRequest{\n\t\t\t\tCell: name,\n\t\t\t})\n\t\t\tc.topoReadPool.Release()\n\n\t\t\tif err != nil {\n\t\t\t\trec.RecordError(fmt.Errorf(\"GetCellInfo(%s) failed: %w\", name, err))\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tm.Lock()\n\t\t\tdefer m.Unlock()\n\t\t\tinfos = append(infos, &vtadminpb.ClusterCellInfo{\n\t\t\t\tCluster:  cpb,\n\t\t\t\tName:     name,\n\t\t\t\tCellInfo: resp.CellInfo,\n\t\t\t})\n\t\t}(name)\n\t}\n\n\twg.Wait()\n\tif rec.HasErrors() {\n\t\treturn nil, rec.Error()\n\t}\n","sourceCodeStart":1091,"sourceCodeEnd":1127,"githubUrl":"https://github.com/vitessio/vitess/blob/01a25a7d176f94613b8d59d799f438380a8760e4/go/vt/vtadmin/cluster/cluster.go#L1091-L1127","documentation":"The per-cell GetCellInfo vtctld RPC failed for one cell while others may succeed. The error is recorded with the cell name. Typical causes are vtctld-side failures reading that cell's topology record or the cell's topology backend being down.","triggerScenarios":"c.Vtctld.GetCellInfo RPC error for a specific cell — cell record missing/malformed in topology, that cell's etcd/zk unreachable, or vtctld error.","commonSituations":"A recently added cell with incomplete topology records; regional topology outage; cell decommissioned but still referenced; network partition to one datacenter.","solutions":["Inspect the wrapped cause and the named cell's topology record","Verify the cell's topology backend (etcd/zk) is healthy","Remove or fix stale cell records","Retry; if persistent, investigate vtctld logs for that cell"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// check the cell record exists before fetching details\nnames, err := vtctldClient.GetCellInfoNames(ctx, &vtctldatapb.GetCellInfoNamesRequest{})\nif err != nil { return err }\nfor _, n := range names.Names {\n    if n == cell { /* ok */ }\n}","typeGuard":null,"tryCatchPattern":"cells, err := cluster.GetCellInfos(ctx, req)\nif err != nil {\n    var missing string\n    if strings.Contains(err.Error(), \"GetCellInfo(\") {\n        // parse cell name from message; degrade gracefully (partial results) or retry\n    }\n    return err\n}","preventionTips":["Clean up stale cell records after decommission","Monitor per-region topology backends","Validate cell records after adding a cell","Use partial-failure handling for multi-cell requests"],"tags":["vtadmin","topology","vtctld","cell"],"backgroundTag":"topology-rpc-failed","analyzedSha":"01a25a7d176f94613b8d59d799f438380a8760e4","analyzedAt":"2026-09-01T17:28:30.605Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}