vitessio/vitess · error
there is no data sourcer factory with name: %s
Error message
there is no data sourcer factory with name: %s
What it means
GetControllerFactory resolves a registered controller factory by name; if the name is not in the controllerFactories registry, this error is returned. It is a configuration/lookup failure: the requested controller type does not exist in this binary.
Source
Thrown at go/vt/schemamanager/schemamanager.go:150
out, _ := json.MarshalIndent(execResult, "", " ")
return execResult, fmt.Errorf("schema change failed, ExecuteResult: %v", string(out))
}
return execResult, nil
}
// RegisterControllerFactory register a control factory.
func RegisterControllerFactory(name string, factory ControllerFactory) {
if _, ok := controllerFactories[name]; ok {
panic("register a registered key: " + name)
}
controllerFactories[name] = factory
}
// GetControllerFactory gets a ControllerFactory.
func GetControllerFactory(name string) (ControllerFactory, error) {
factory, ok := controllerFactories[name]
if !ok {
return nil, fmt.Errorf("there is no data sourcer factory with name: %s", name)
}
return factory, nil
}
View on GitHub (pinned to 01a25a7d17)
Solutions
- Use a registered controller name — currently 'local' — check spelling
- Verify the vitess version supports the controller type you intend
- Inspect available factories via the RegisterControllerFactory call sites in schemamanager
Example fix
// before
factory, err := schemamanager.GetControllerFactory("lokal")
// after
factory, err := schemamanager.GetControllerFactory("local") Defensive patterns
Strategy: validation
Validate before calling
const allowed = map[string]bool{"local": true}
if !allowed[controllerName] {
return fmt.Errorf("unsupported controller %q; use 'local'", controllerName)
} Prevention
- Use schemamanager constants rather than raw strings for controller names
- Pin vitess versions so controller types match config
- List registered factories when diagnosing config errors
When it happens
Trigger: Calling GetControllerFactory (via initSchema/NewSchemaManager) with a controller name other than the registered ones (e.g. 'local'); typo in the controller config value.
Common situations: Typo like 'loca' instead of 'local'; using a controller type added in a newer vitess version on an older binary; building params programmatically with a wrong constant.
Related errors
- --batch-size requires 'direct' ddl_strategy
- --batch-size conflicts with --uuid-list. Batching does not s
- --batch-size only allowed when all queries are CREATE TABLE|
- unable to construct a LocalController instance because param
- --s3-backup-storage-bucket required
AI-assisted analysis of vitessio/vitess@01a25a7d17 (2026-09-01).
Data as JSON: /api/errors/05c9fe3c5332f463.
Report an issue: GitHub.