{"record":{"id":"65249dc3d6712a03","repo":"vitessio/vitess","slug":"findtablets-cluster-s-w","errorCode":null,"errorMessage":"FindTablets(cluster = %s): %w","messagePattern":"FindTablets\\(cluster = (.+?)\\): %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"go/vt/vtadmin/api.go","lineNumber":2951,"sourceCode":"\n\t\ttablets []*vtadminpb.Tablet\n\t)\n\n\tfor _, c := range clusters {\n\t\tif !api.authz.IsAuthorized(ctx, c.ID, resource, action) {\n\t\t\tcontinue\n\t\t}\n\n\t\twg.Add(1)\n\n\t\tgo func(c *cluster.Cluster) {\n\t\t\tdefer wg.Done()\n\n\t\t\tts, err := c.FindTablets(ctx, func(t *vtadminpb.Tablet) bool {\n\t\t\t\treturn topoproto.TabletAliasEqual(t.Tablet.Alias, alias)\n\t\t\t}, -1)\n\t\t\tif err != nil {\n\t\t\t\trec.RecordError(fmt.Errorf(\"FindTablets(cluster = %s): %w\", c.ID, err))\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tm.Lock()\n\t\t\ttablets = append(tablets, ts...)\n\t\t\tm.Unlock()\n\t\t}(c)\n\t}\n\n\twg.Wait()\n\n\tif rec.HasErrors() {\n\t\treturn nil, nil, rec.Error()\n\t}\n\n\tswitch len(tablets) {\n\tcase 0:\n\t\treturn nil, nil, vterrors.Errorf(vtrpcpb.Code_NOT_FOUND, \"%s: %s, searched clusters = %v\", errors.ErrNoTablet, alias, ids)","sourceCodeStart":2933,"sourceCodeEnd":2969,"githubUrl":"https://github.com/vitessio/vitess/blob/01a25a7d176f94613b8d59d799f438380a8760e4/go/vt/vtadmin/api.go#L2933-L2969","documentation":"VTAdmin's FindTabletsAcrossClusters fans out per-cluster tablet lookups in goroutines and collects failures in an errors.Group; this error wraps the underlying failure from cluster.FindTablets for cluster c.ID. FindTablets queries the topology (topo server) for tablets, so failures are usually topo connectivity or data issues.","triggerScenarios":"LookupTablets/related calls with an alias filter where the topo RPC for a specific cluster fails (topo server unreachable, no tablets matching the alias are returned-with-error, topo read timeout).","commonSituations":"VTAdmin cannot reach the topo server (etcd/zk) for one cluster; wrong topo flags for that cluster; network partition or cell's topo is down; tablet alias typo causing a strict lookup error.","solutions":["Read the wrapped inner error to identify which cluster/topo call failed and fix topo connectivity (etcd/zk address, auth) for that cluster","Verify the tablet alias value and that the tablet exists in the topo","Retry once topo access is restored; check vitess topo server health"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// check topo reachability for the cluster before fan-out\nif err := pingTopo(clusterID); err != nil {\n    return fmt.Errorf(\"topo for %s unreachable: %w\", clusterID, err)\n}","typeGuard":null,"tryCatchPattern":"tablets, err := client.LookupTablets(ctx, req)\nif err != nil {\n    var transient = isTopoTimeout(err) // inspect wrapped FindTablets(cluster = ...) cause\n    if transient {\n        select {\n        case <-time.After(backoff):\n            tablets, err = client.LookupTablets(ctx, req)\n        case <-ctx.Done():\n            return ctx.Err()\n        }\n    }\n    if err != nil { return err }\n}","preventionTips":["Monitor topo server (etcd/zk) health for every cluster vtadmin serves","Validate tablet aliases before lookups","Set generous topo RPC timeouts for cross-DC setups"],"tags":["topology","discovery","network","vtadmin"],"backgroundTag":"topo-server-unreachable","analyzedSha":"01a25a7d176f94613b8d59d799f438380a8760e4","analyzedAt":"2026-09-01T17:28:30.605Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}