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

  1. Use a registered controller name — currently 'local' — check spelling
  2. Verify the vitess version supports the controller type you intend
  3. 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

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


AI-assisted analysis of vitessio/vitess@01a25a7d17 (2026-09-01). Data as JSON: /api/errors/05c9fe3c5332f463. Report an issue: GitHub.