temporalio/temporal · error
translator_plugin: invalid translator plugin requested
Error message
translator_plugin: invalid translator plugin requested
What it means
ErrInvalidTranslatorPluginName is the sentinel error returned by translator.LookupTranslator when the requested plugin name has no registered TranslatorPlugin in the translators registry. Currently only the "fixed" plugin is registered, so any other name yields this error.
Source
Thrown at common/persistence/nosql/nosqlplugin/cassandra/translator/translator_plugin.go:11
package translator
import (
"errors"
"github.com/gocql/gocql"
"go.temporal.io/server/common/config"
)
var (
ErrInvalidTranslatorPluginName = errors.New("translator_plugin: invalid translator plugin requested")
translators = map[string]TranslatorPlugin{}
)
type (
// TranslatorPlugin interface for Cassandra address translation mechanism
TranslatorPlugin interface {
GetTranslator(*config.Cassandra) (gocql.AddressTranslator, error)
}
)
// RegisterPlugin adds an auth plugin to the plugin registry
// it is only safe to use from a package init function
func RegisterTranslator(name string, plugin TranslatorPlugin) {
translators[name] = plugin
}
func LookupTranslator(name string) (TranslatorPlugin, error) {
plugin, ok := translators[name]View on GitHub (pinned to bde624efd1)
Solutions
- Use the registered plugin name, currently "fixed", exactly (lowercase, no whitespace)
- Check available plugins via the translators registry or repo (fixed_address_translator.go's RegisterTranslator call)
- If a custom translator is needed, implement TranslatorPlugin and call RegisterTranslator before LookupTranslator
Example fix
// before
trans, err := translator.LookupTranslator("FixedTranslator")
// after
trans, err := translator.LookupTranslator("fixed")
Defensive patterns
Strategy: validation
Validate before calling
name := strings.TrimSpace(cfgPluginName)
if name != "fixed" { // only currently registered plugin
return fmt.Errorf("unsupported translator plugin %q; available: fixed", cfgPluginName)
} Prevention
- Use the literal registered name "fixed" in config
- Check errors.Is(err, translator.ErrInvalidTranslatorPluginName) to distinguish this from other lookup failures
- Trim whitespace/case-normalize config values before lookup
When it happens
Trigger: Calling translator.LookupTranslator(name) with a name never registered via RegisterTranslator (e.g. "fixed " with whitespace, wrong casing, or an entirely unsupported plugin name in the config).
Common situations: Typo in cassandra config's addressTranslator type/name; expecting another translator implementation that does not exist in this fork/version; whitespace or case mismatch in config value.
Related errors
- there is no addressTranslator configuration in cassandra con
- there are no options for translator plugin
- detected no advertised-hostname key or empty value for trans
- only one of certData or certFile properties should be specif
- only one of keyData or keyFile properties should be specifie
AI-assisted analysis of temporalio/temporal@bde624efd1 (2026-09-01).
Data as JSON: /api/errors/f9c5c97dc6871387.
Report an issue: GitHub.