Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 15 additions & 19 deletions go/vt/vtadmin/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ func (api *API) GetGates(ctx context.Context, req *vtadminpb.GetGatesRequest) (*

gs, err := c.Discovery.DiscoverVTGates(ctx, []string{})
if err != nil {
er.RecordError(err)
er.RecordError(fmt.Errorf("DiscoverVTGates(cluster = %s): %w", c.ID, err))
return
}

Expand Down Expand Up @@ -315,7 +315,7 @@ func (api *API) GetKeyspaces(ctx context.Context, req *vtadminpb.GetKeyspacesReq

resp, err := c.Vtctld.GetKeyspaces(ctx, &vtctldatapb.GetKeyspacesRequest{})
if err != nil {
er.RecordError(err)
er.RecordError(fmt.Errorf("GetKeyspaces(cluster = %s): %w", c.ID, err))
return
}

Expand All @@ -337,7 +337,7 @@ func (api *API) GetKeyspaces(ctx context.Context, req *vtadminpb.GetKeyspacesReq
})

if err != nil {
er.RecordError(err)
er.RecordError(fmt.Errorf("FindAllShardsInKeyspace(%s): %w", ks.Name, err))
return
}

Expand Down Expand Up @@ -566,7 +566,7 @@ func (api *API) GetTablet(ctx context.Context, req *vtadminpb.GetTabletRequest)

ts, err := c.GetTablets(ctx)
if err != nil {
er.RecordError(err)
er.RecordError(fmt.Errorf("GetTablets(cluster = %s): %w", c.ID, err))
return
}

Expand Down Expand Up @@ -622,7 +622,7 @@ func (api *API) GetTablets(ctx context.Context, req *vtadminpb.GetTabletsRequest

ts, err := c.GetTablets(ctx)
if err != nil {
er.RecordError(err)
er.RecordError(fmt.Errorf("GetTablets(cluster = %s): %w", c.ID, err))
return
}

Expand Down Expand Up @@ -796,15 +796,14 @@ func (api *API) VTExplain(ctx context.Context, req *vtadminpb.VTExplainRequest)

c, ok := api.clusterMap[req.Cluster]
if !ok {
return nil, errors.ErrUnsupportedCluster
return nil, fmt.Errorf("%w: %s", errors.ErrUnsupportedCluster, req.Cluster)
}

tablet, err := c.FindTablet(ctx, func(t *vtadminpb.Tablet) bool {
return t.Tablet.Keyspace == req.Keyspace && topo.IsInServingGraph(t.Tablet.Type) && t.Tablet.Type != topodatapb.TabletType_MASTER && t.State == vtadminpb.Tablet_SERVING
})

if err != nil {
return nil, err
return nil, fmt.Errorf("cannot find serving, non-primary tablet in keyspace=%s: %w", req.Keyspace, err)
}

if err := c.Vtctld.Dial(ctx); err != nil {
Expand All @@ -831,17 +830,14 @@ func (api *API) VTExplain(ctx context.Context, req *vtadminpb.VTExplainRequest)
go func(c *cluster.Cluster) {
defer wg.Done()

res, err := c.Vtctld.GetSchema(ctx, &vtctldatapb.GetSchemaRequest{
TabletAlias: tablet.Tablet.Alias,
})

res, err := c.GetSchema(ctx, &vtctldatapb.GetSchemaRequest{}, tablet)
if err != nil {
er.RecordError(err)
er.RecordError(fmt.Errorf("GetSchema(%s): %w", topoproto.TabletAliasString(tablet.Tablet.Alias), err))
return
}

schemas := make([]string, len(res.Schema.TableDefinitions))
for i, td := range res.Schema.TableDefinitions {
schemas := make([]string, len(res.TableDefinitions))
for i, td := range res.TableDefinitions {
schemas[i] = td.Schema
}

Expand All @@ -857,7 +853,7 @@ func (api *API) VTExplain(ctx context.Context, req *vtadminpb.VTExplainRequest)
})

if err != nil {
er.RecordError(err)
er.RecordError(fmt.Errorf("GetSrvVSchema(%s): %w", tablet.Tablet.Alias.Cell, err))
return
}

Expand Down Expand Up @@ -885,7 +881,7 @@ func (api *API) VTExplain(ctx context.Context, req *vtadminpb.VTExplainRequest)
})

if err != nil {
er.RecordError(err)
er.RecordError(fmt.Errorf("FindAllShardsInKeyspace(%s): %w", req.Keyspace, err))
return
}

Expand All @@ -912,12 +908,12 @@ func (api *API) VTExplain(ctx context.Context, req *vtadminpb.VTExplainRequest)
opts := &vtexplain.Options{ReplicationMode: "ROW"}

if err := vtexplain.Init(srvVSchema, schema, shardMap, opts); err != nil {
return nil, err
return nil, fmt.Errorf("error initilaizing vtexplain: %w", err)
}

plans, err := vtexplain.Run(req.Sql)
if err != nil {
return nil, err
return nil, fmt.Errorf("error running vtexplain: %w", err)
}

response := vtexplain.ExplainsAsText(plans)
Expand Down
10 changes: 5 additions & 5 deletions go/vt/vtadmin/cluster/cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ func New(cfg Config) (*Cluster, error) {

disco, err := discovery.New(cfg.DiscoveryImpl, cluster.ToProto(), discoargs)
if err != nil {
return nil, fmt.Errorf("error while creating discovery impl (%s): %w", cfg.DiscoveryImpl, err)
return nil, fmt.Errorf("error creating discovery impl (%s): %w", cfg.DiscoveryImpl, err)
}

cluster.Discovery = disco
Expand All @@ -76,14 +76,14 @@ func New(cfg Config) (*Cluster, error) {

vtsqlCfg, err := vtsql.Parse(protocluster, disco, vtsqlargs)
if err != nil {
return nil, fmt.Errorf("error while creating vtsql connection config: %w", err)
return nil, fmt.Errorf("error creating vtsql connection config: %w", err)
}

vtctldargs := buildPFlagSlice(cfg.VtctldFlags)

vtctldCfg, err := vtctldclient.Parse(protocluster, disco, vtctldargs)
if err != nil {
return nil, fmt.Errorf("error while creating vtctldclient proxy config: %w", err)
return nil, fmt.Errorf("error creating vtctldclient proxy config: %w", err)
}

cluster.DB = vtsql.New(vtsqlCfg)
Expand Down Expand Up @@ -179,7 +179,7 @@ func (c *Cluster) parseTablet(rows *sql.Rows) (*vtadminpb.Tablet, error) {

topotablet.Alias, err = topoproto.ParseTabletAlias(aliasStr)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to parse tablet_alias %s: %w", aliasStr, err)
}

if topotablet.Alias.Cell != cell {
Expand All @@ -190,7 +190,7 @@ func (c *Cluster) parseTablet(rows *sql.Rows) (*vtadminpb.Tablet, error) {
if mtstStr != "" {
timeTime, err := time.Parse(time.RFC3339, mtstStr)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed parsing master_term_start_time %s: %w", mtstStr, err)
}

topotablet.MasterTermStartTime = logutil.TimeToProto(timeTime)
Expand Down
2 changes: 1 addition & 1 deletion go/vt/vtadmin/cluster/discovery/discovery.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,5 +109,5 @@ func New(impl string, cluster *vtadminpb.Cluster, args []string) (Discovery, err

func init() { // nolint:gochecknoinits
Register("consul", NewConsul)
Register("staticFile", NewStaticFile)
Register("staticfile", NewStaticFile)
}
19 changes: 10 additions & 9 deletions go/vt/vtadmin/cluster/discovery/discovery_consul.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package discovery
import (
"bytes"
"context"
"fmt"
"math/rand"
"strings"
"text/template"
Expand Down Expand Up @@ -113,25 +114,25 @@ func NewConsul(cluster *vtadminpb.Cluster, flags *pflag.FlagSet, args []string)
if *vtgateDatacenterTmplStr != "" {
disco.vtgateDatacenter, err = generateConsulDatacenter("vtgate", cluster, *vtgateDatacenterTmplStr)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to generate vtgate consul datacenter from template: %w", err)
}
}

disco.vtgateAddrTmpl, err = template.New("consul-vtgate-address-template-" + cluster.Id).Parse(*vtgateAddrTmplStr)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to parse vtgate host address template %s: %w", *vtgateAddrTmplStr, err)
}

if *vtctldDatacenterTmplStr != "" {
disco.vtctldDatacenter, err = generateConsulDatacenter("vtctld", cluster, *vtctldDatacenterTmplStr)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to generate vtctld consul datacenter from template: %w", err)
}
}

disco.vtctldAddrTmpl, err = template.New("consul-vtctld-address-template-" + cluster.Id).Parse(*vtctldAddrTmplStr)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to parse vtctld host address template %s: %w", *vtctldAddrTmplStr, err)
}

return disco, nil
Expand All @@ -140,7 +141,7 @@ func NewConsul(cluster *vtadminpb.Cluster, flags *pflag.FlagSet, args []string)
func generateConsulDatacenter(component string, cluster *vtadminpb.Cluster, tmplStr string) (string, error) {
tmpl, err := template.New("consul-" + component + "-datacenter-" + cluster.Id).Parse(tmplStr)
if err != nil {
return "", err
return "", fmt.Errorf("error parsing template %s: %w", tmplStr, err)
}

buf := bytes.NewBuffer(nil)
Expand All @@ -151,10 +152,10 @@ func generateConsulDatacenter(component string, cluster *vtadminpb.Cluster, tmpl
})

if err != nil {
return "", err
return "", fmt.Errorf("failed to execute template: %w", err)
}

return buf.String(), err
return buf.String(), nil
}

// DiscoverVTGate is part of the Discovery interface.
Expand Down Expand Up @@ -190,7 +191,7 @@ func (c *ConsulDiscovery) DiscoverVTGateAddr(ctx context.Context, tags []string)

buf := bytes.NewBuffer(nil)
if err := c.vtgateAddrTmpl.Execute(buf, vtgate); err != nil {
return "", err
return "", fmt.Errorf("failed to execute vtgate address template for %v: %w", vtgate, err)
}

return buf.String(), nil
Expand Down Expand Up @@ -290,7 +291,7 @@ func (c *ConsulDiscovery) DiscoverVtctldAddr(ctx context.Context, tags []string)

buf := bytes.NewBuffer(nil)
if err := c.vtctldAddrTmpl.Execute(buf, vtctld); err != nil {
return "", err
return "", fmt.Errorf("failed to execute vtctld address template for %v: %w", vtctld, err)
}

return buf.String(), nil
Expand Down
3 changes: 2 additions & 1 deletion go/vt/vtadmin/cluster/discovery/discovery_static_file.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"context"
"encoding/json"
"errors"
"fmt"
"io/ioutil"
"math/rand"

Expand Down Expand Up @@ -106,7 +107,7 @@ func NewStaticFile(cluster *vtadminpb.Cluster, flags *pflag.FlagSet, args []stri

func (d *StaticFileDiscovery) parseConfig(bytes []byte) error {
if err := json.Unmarshal(bytes, &d.config); err != nil {
return err
return fmt.Errorf("failed to unmarshal staticfile config from json: %w", err)
}

d.gates.byName = make(map[string]*vtadminpb.VTGate, len(d.config.VTGates))
Expand Down
5 changes: 3 additions & 2 deletions go/vt/vtadmin/vtctldclient/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package vtctldclient

import (
"context"
"fmt"

"google.golang.org/grpc"

Expand Down Expand Up @@ -92,13 +93,13 @@ func (vtctld *ClientProxy) Dial(ctx context.Context) error {

// close before reopen. this is safe to call on an already-closed client.
if err := vtctld.Close(); err != nil {
return err
return fmt.Errorf("error closing possibly-stale connection before re-dialing: %w", err)
}
}

addr, err := vtctld.discovery.DiscoverVtctldAddr(ctx, nil)
if err != nil {
return err
return fmt.Errorf("error discovering vtctld to dial: %w", err)
}

opts := []grpc.DialOption{}
Expand Down
4 changes: 2 additions & 2 deletions go/vt/vtadmin/vtsql/vtsql.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ func (vtgate *VTGateProxy) Dial(ctx context.Context, target string, opts ...grpc
if vtgate.host == "" {
gate, err := vtgate.discovery.DiscoverVTGateAddr(ctx, vtgate.discoveryTags)
if err != nil {
return err
return fmt.Errorf("error discovering vtgate to dial: %w", err)
}

vtgate.host = gate
Expand All @@ -163,7 +163,7 @@ func (vtgate *VTGateProxy) Dial(ctx context.Context, target string, opts ...grpc

db, err := vtgate.DialFunc(conf)
if err != nil {
return err
return fmt.Errorf("error dialing vtgate %s: %w", vtgate.host, err)
}

vtgate.conn = db
Expand Down