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

  1. Use the registered plugin name, currently "fixed", exactly (lowercase, no whitespace)
  2. Check available plugins via the translators registry or repo (fixed_address_translator.go's RegisterTranslator call)
  3. 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

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


AI-assisted analysis of temporalio/temporal@bde624efd1 (2026-09-01). Data as JSON: /api/errors/f9c5c97dc6871387. Report an issue: GitHub.