prestodb/presto · error · IllegalArgumentException

Plugin-configured tracer provider ('%s') does not match syst

Error message

Plugin-configured tracer provider ('%s') does not match system-configured provider ('%s').

What it means

TracerProviderManager.addTracerProviderFactory registers a plugin-supplied TracerProvider, but only if its tracer type matches the system-configured tracing type. A mismatch means the plugin's tracer cannot be used under the current tracing configuration, so it rejects the provider with IllegalArgumentException at plugin load time.

Source

Thrown at presto-main-base/src/main/java/com/facebook/presto/tracing/TracerProviderManager.java:44

    private final boolean systemTracingEnabled;
    @Nullable
    private TracerProvider tracerProvider;

    @Inject
    public TracerProviderManager(TracingConfig config)
    {
        requireNonNull(config, "config is null");

        this.tracerType = config.getTracerType();
        boolean enableDistributedTracing = config.getEnableDistributedTracing();
        TracingConfig.DistributedTracingMode distributedTracingMode = config.getDistributedTracingMode();
        this.systemTracingEnabled = enableDistributedTracing && distributedTracingMode.name().equalsIgnoreCase(TracingConfig.DistributedTracingMode.ALWAYS_TRACE.name());
    }

    public void addTracerProviderFactory(TracerProvider provider)
    {
        if (!tracerType.equals(provider.getTracerType())) {
            throw new IllegalArgumentException(
                    format(
                            "Plugin-configured tracer provider ('%s') does not match system-configured provider ('%s').",
                            provider.getName(),
                            tracerType));
        }
        if (systemTracingEnabled) {
            if (tracerProvider != null) {
                throw new IllegalArgumentException(format("Only a single plugin should set the tracer provider ('%s').", tracerProvider.getTracerType()));
            }
            tracerProvider = provider;
        }
    }

    public void loadTracerProvider()
    {
        if (tracerProvider != null) {
            return;
        }

View on GitHub (pinned to 55bb57d202)

Solutions

  1. Align the system tracing type configuration with the plugin's getTracerType() value
  2. Remove or disable the plugin that provides the incompatible tracer
  3. Upgrade/downgrade the plugin to a version whose tracer type matches the cluster configuration
  4. Check plugin logs or the provider's getTracerType()/getName() output to confirm the expected type

Example fix

// before (plugin provides OPENTELEMETRY but system expects DATADOG)
tracing.distributed-tracing-enabled=true
tracer-type=DATADOG
// after (match plugin provider type)
tracing.distributed-tracing-enabled=true
tracer-type=OPENTELEMETRY
Defensive patterns

Strategy: validation

Validate before calling

if (!configuredTracerType.equals(pluginProvider.getTracerType())) {
    throw new IllegalStateException(String.format(
        "Plugin tracer '%s' type %s does not match configured tracer type %s",
        pluginProvider.getName(), pluginProvider.getTracerType(), configuredTracerType));
}

Type guard

boolean isCompatibleTracerProvider(TracerProvider provider, String configuredTracerType) {
    return provider != null && configuredTracerType.equals(provider.getTracerType());
}

Try / catch

try {
    tracerProviderManager.addTracerProviderFactory(provider);
} catch (IllegalArgumentException e) {
    if (e.getMessage().contains("does not match system-configured provider")) {
        LOG.error("Plugin '%s' tracer type incompatible with cluster config; uninstall or fix config", provider.getName());
    } else {
        throw e;
    }
}

Prevention

When it happens

Trigger: Installing a plugin whose TracerProvider.getTracerType() differs from the value configured for the system tracer type (the tracerType field set from tracing configuration) while distributed tracing is enabled.

Common situations: Configuring tracing.properties for one tracer (e.g. the built-in provider) while a third-party plugin bundles a different tracer provider; upgrading a plugin that changed its default tracer type; copying a plugin from a cluster with different tracing settings.

Related errors


AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04). Data as JSON: /api/errors/527f95ee3a107e24. Report an issue: GitHub.