vitessio/vitess · critical
error creating vtctldclient proxy config: %w
Error message
error creating vtctldclient proxy config: %w
What it means
cluster.New fails when vtctldclient.Parse cannot construct the vtctld proxy connection config from the cluster proto and cfg.VtctldFlags. Like the vtsql step, this is config/flag validation at startup; the underlying parse error is preserved as the cause.
Source
Thrown at go/vt/vtadmin/cluster/cluster.go:133
protocluster := cluster.ToProto()
vtsqlargs := buildPFlagSlice(cfg.VtSQLFlags)
vtsqlCfg, err := vtsql.Parse(protocluster, disco, vtsqlargs)
if err != nil {
return nil, fmt.Errorf("error creating vtsql connection config: %w", err)
}
for _, opt := range cfg.vtsqlConfigOpts {
vtsqlCfg = opt(vtsqlCfg)
}
vtctldargs := buildPFlagSlice(cfg.VtctldFlags)
vtctldCfg, err := vtctldclient.Parse(protocluster, disco, vtctldargs)
if err != nil {
return nil, fmt.Errorf("error creating vtctldclient proxy config: %w", err)
}
for _, opt := range cfg.vtctldConfigOpts {
vtctldCfg = opt(vtctldCfg)
}
cluster.DB, err = vtsql.New(ctx, vtsqlCfg)
if err != nil {
return nil, fmt.Errorf("error creating vtsql proxy: %w", err)
}
cluster.Vtctld, err = vtctldclient.New(ctx, vtctldCfg)
if err != nil {
return nil, fmt.Errorf("error creating vtctldclient: %w", err)
}
if cfg.TabletFQDNTmplStr != "" {
cluster.TabletFQDNTmpl, err = template.New(cluster.ID + "-tablet-fqdn").Parse(cfg.TabletFQDNTmplStr)View on GitHub (pinned to 01a25a7d17)
Solutions
- Correct the vtctld flags (host/port of the vtctld server) in the cluster config
- Validate flag names against vtctldclient.Parse for your version
- Test flags individually to isolate the offending one
Example fix
// before vtctld: "-vtctld-host" // after vtctld: "-vtctld-host vtctld.example.com -vtctld-port 15999"
Defensive patterns
Strategy: validation
Validate before calling
// pre-validate vtctld flags before BuildCluster
if err := validateFlagNames("vtctld", cfg.VtctldFlags); err != nil {
return fmt.Errorf("bad vtctld flags: %w", err)
} Try / catch
c, err := cluster.BuildCluster(ctx, cfg)
if err != nil {
if strings.Contains(err.Error(), "vtctldclient proxy config") {
return fmt.Errorf("check --vtctld flags for cluster %q: %w", cfg.ID, err)
}
return err
} Prevention
- Use deployment templates with validated vtctld host/port values
- Re-check flag names after vitess upgrades (deprecated flags get removed)
- Test cluster construction in CI before production rollout
When it happens
Trigger: cfg.VtctldFlags contains an unknown or invalid flag for building the vtctldclient proxy config during cluster.BuildCluster.
Common situations: Wrong vtctld host/port; renamed or removed vtctld flags after upgrading vitess; malformed flag string (missing values, bad quoting).
Related errors
- error creating vtsql connection config: %w
- error creating discovery impl (%s): %w
- failed to parse tablet fqdn template %s: %w
- cannot load credentials from path template %s: %w
- --s3-backup-storage-bucket required
AI-assisted analysis of vitessio/vitess@01a25a7d17 (2026-09-01).
Data as JSON: /api/errors/b3441e046787fe68.
Report an issue: GitHub.