vitessio/vitess · error
throttler: %v does not exist
Error message
throttler: %v does not exist
What it means
Manager.GetConfiguration returns configuration for a named throttler; if the name is not present in the registry, it cannot return any configuration. Empty name returns configs for all throttlers instead.
Source
Thrown at go/vt/throttler/manager.go:131
defer m.mu.Unlock()
for _, t := range m.throttlers {
t.SetMaxRate(rate)
}
return m.throttlerNamesLocked()
}
// GetConfiguration implements the "Manager" interface.
func (m *managerImpl) GetConfiguration(throttlerName string) (map[string]*throttlerdatapb.Configuration, error) {
m.mu.Lock()
defer m.mu.Unlock()
configurations := make(map[string]*throttlerdatapb.Configuration)
if throttlerName != "" {
t, ok := m.throttlers[throttlerName]
if !ok {
return nil, fmt.Errorf("throttler: %v does not exist", throttlerName)
}
configurations[throttlerName] = t.GetConfiguration()
return configurations, nil
}
for name, t := range m.throttlers {
configurations[name] = t.GetConfiguration()
}
return configurations, nil
}
// UpdateConfiguration implements the "Manager" interface.
func (m *managerImpl) UpdateConfiguration(throttlerName string, configuration *throttlerdatapb.Configuration, copyZeroValues bool) ([]string, error) {
m.mu.Lock()
defer m.mu.Unlock()
// Note: The calls to t.UpdateConfiguration() below return no error but the
// called protobuf library functions may panic. This is fine because theView on GitHub (pinned to 01a25a7d17)
Solutions
- Verify the exact throttler name (keyspace/cell format) used at registration
- Run GetConfiguration with empty name to list all registered throttler names
- Retry against the correct vttablet/cell that hosts the throttler
- Fix any name typos in the tooling calling ThrottlerGetConfiguration
Example fix
// before mgr.GetConfiguration(ctx, "commerce0", nil) // after mgr.GetConfiguration(ctx, "commerce/0", nil) // correct name
Defensive patterns
Strategy: type-guard
Validate before calling
names, err := manager.GetConfiguration(ctx, "", nil)
if err != nil { return err }
if _, ok := names[wantedName]; !ok {
return fmt.Errorf("%s not registered here", wantedName)
} Type guard
func throttlerExists(name string, all map[string]*throttlerdatapb.Configuration) bool {
_, ok := all[name]
return ok
} Try / catch
cfg, err := manager.GetConfiguration(ctx, name, nil)
if err != nil {
if strings.Contains(err.Error(), "does not exist") {
return retryOnOtherCell(name)
}
return err
} Prevention
- List all throttlers (empty-name query) before targeting one
- Use the exact keyspace/cell name from registration
- Route RPCs to the tablet hosting the throttler
When it happens
Trigger: Calling GetConfiguration(throttlerName) via the throttler RPC/ThrottlerGetConfiguration with a throttler name that is not registered on that manager.
Common situations: Client targets the wrong cell/vttablet (throttler name includes keyspace/cell), stale name after reshard, or typo in the throttler name in the get-configuration command.
Related errors
- failed to instantiate throttler: %v
- failed to update throttler: %v err: %v
- --s3-backup-storage-bucket required
- direct DDL is disabled
- online DDL is disabled
AI-assisted analysis of vitessio/vitess@01a25a7d17 (2026-09-01).
Data as JSON: /api/errors/4b5c8019402bd3d9.
Report an issue: GitHub.