{"record":{"id":"fe2acd48f662576c","repo":"vitessio/vitess","slug":"getbackups-s-s-w","errorCode":null,"errorMessage":"GetBackups(%s/%s): %w","messagePattern":"GetBackups\\((.+?)/(.+?)\\): %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"go/vt/vtadmin/cluster/cluster.go","lineNumber":896,"sourceCode":"\t\t\t\tspan.Annotate(\"keyspace\", keyspace)\n\t\t\t\tspan.Annotate(\"shard\", shard)\n\n\t\t\t\tif err := c.backupReadPool.Acquire(ctx); err != nil {\n\t\t\t\t\trec.RecordError(fmt.Errorf(\"GetBackups(%s/%s) failed to acquire backupReadPool: %w\", keyspace, shard, err))\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tresp, err := c.Vtctld.GetBackups(ctx, &vtctldatapb.GetBackupsRequest{\n\t\t\t\t\tKeyspace:      keyspace,\n\t\t\t\t\tShard:         shard,\n\t\t\t\t\tLimit:         req.RequestOptions.Limit,\n\t\t\t\t\tDetailed:      req.RequestOptions.Detailed,\n\t\t\t\t\tDetailedLimit: req.RequestOptions.DetailedLimit,\n\t\t\t\t})\n\t\t\t\tc.backupReadPool.Release()\n\n\t\t\t\tif err != nil {\n\t\t\t\t\trec.RecordError(fmt.Errorf(\"GetBackups(%s/%s): %w\", keyspace, shard, err))\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tshardBackups := make([]*vtadminpb.ClusterBackup, len(resp.Backups))\n\t\t\t\tfor i, backup := range resp.Backups {\n\t\t\t\t\tshardBackups[i] = &vtadminpb.ClusterBackup{\n\t\t\t\t\t\tCluster: clusterProto,\n\t\t\t\t\t\tBackup:  backup,\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tm.Lock()\n\t\t\t\tdefer m.Unlock()\n\n\t\t\t\tbackups = append(backups, shardBackups...)\n\t\t\t}(ks, shard)\n\t\t}\n\t}","sourceCodeStart":878,"sourceCodeEnd":914,"githubUrl":"https://github.com/vitessio/vitess/blob/01a25a7d176f94613b8d59d799f438380a8760e4/go/vt/vtadmin/cluster/cluster.go#L878-L914","documentation":"The per-shard GetBackups vtctld RPC failed after a pool slot was obtained. The error is wrapped with keyspace/shard so the operator can identify which shard's backup inventory could not be read. Other shards proceed independently.","triggerScenarios":"c.Vtctld.GetBackups RPC returning an error for a specific keyspace/shard — vtctld unreachable, backup directory unreadable on the backup storage, or shard missing in topology.","commonSituations":"Backup storage (NFS/S3) misconfigured or temporarily unavailable; shard recently created/removed; vtctld restarting during the sweep; network flake.","solutions":["Check the wrapped cause and vtctld logs for that shard","Verify backup storage configuration and connectivity","Confirm the shard exists in the topology","Retry the listing"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// confirm shard exists in topology before listing backups\nsr, err := vtctldClient.GetShard(ctx, &vtctldatapb.GetShardRequest{Keyspace: ks, Shard: shard})\nif err != nil { return fmt.Errorf(\"shard %s/%s not queryable: %w\", ks, shard, err) }","typeGuard":null,"tryCatchPattern":"backups, err := cluster.GetBackups(ctx, req)\nif err != nil {\n    log.Warn(\"backup listing failed for shard\", slog.Any(\"error\", err))\n    // inspect wrapped cause; retry transient failures\n}","preventionTips":["Verify backup storage config and connectivity","Keep topology records for active shards intact","Set per-request timeouts above vtctld latency","Alert on vtctld restarts"],"tags":["vtadmin","backup","vtctld","rpc"],"backgroundTag":"vtctld-rpc-failed","analyzedSha":"01a25a7d176f94613b8d59d799f438380a8760e4","analyzedAt":"2026-09-01T17:28:30.605Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}