prestodb/presto · critical · UnsupportedOperationException
Unknown cluster Ttl provider manager
Error message
Unknown cluster Ttl provider manager
What it means
ClusterTtlProviderManagerModule.setup throws UnsupportedOperationException when the configured ttl-provider-manager type (config.getClusterTtlProviderManagerType()) matches none of the supported enum cases (currently only CONFIDENCE, plus a Throwing default binding path). This is a startup-time configuration validation error, not a runtime failure.
Source
Thrown at presto-main-base/src/main/java/com/facebook/presto/ttl/clusterttlprovidermanagers/ClusterTtlProviderManagerModule.java:35
import com.google.inject.Binder;
import com.google.inject.Scopes;
public class ClusterTtlProviderManagerModule
extends AbstractConfigurationAwareModule
{
@Override
protected void setup(Binder binder)
{
ClusterTtlProviderManagerConfig config = buildConfigObject(ClusterTtlProviderManagerConfig.class);
switch (config.getClusterTtlProviderManagerType()) {
case THROWING:
binder.bind(ClusterTtlProviderManager.class).to(ThrowingClusterTtlProviderManager.class).in(Scopes.SINGLETON);
break;
case CONFIDENCE:
binder.bind(ClusterTtlProviderManager.class).to(ConfidenceBasedClusterTtlProviderManager.class).in(Scopes.SINGLETON);
break;
default:
throw new UnsupportedOperationException("Unknown cluster Ttl provider manager " + config.getClusterTtlProviderManagerType());
}
}
}
View on GitHub (pinned to 55bb57d202)
Solutions
- Set cluster-ttl-provider-manager-type to a supported value, e.g. CONFIDENCE, in the coordinator config.
- Check the ClusterTtlProviderManagerType enum in your Presto version for valid values.
- Remove the stale/unknown property line if TTL provider management is not needed.
- Align config with the Presto version in use (property may exist only in newer/older releases).
Example fix
// before (etc/config.properties) cluster-ttl-provider-manager-type=custom-manager // after cluster-ttl-provider-manager-type=CONFIDENCE
Defensive patterns
Strategy: validation
Validate before calling
// Validate config before boot
ClusterTtlProviderManagerType type = config.getClusterTtlProviderManagerType();
if (type == null || !EnumSet.allOf(ClusterTtlProviderManagerType.class).contains(type)) {
throw new IllegalArgumentException("Unsupported cluster-ttl-provider-manager-type: " + type);
} Type guard
boolean isValidManagerType(String value) {
try {
ClusterTtlProviderManagerType.valueOf(value.trim().toUpperCase());
return true;
} catch (IllegalArgumentException e) {
return false;
}
} Try / catch
try {
injector = Guice.createInjector(new ClusterTtlProviderManagerModule(config));
} catch (UnsupportedOperationException e) {
// log the offending config value and fail fast with a clear message
LOG.error(e.getMessage() + " — set cluster-ttl-provider-manager-type to a valid enum value");
throw e;
} Prevention
- Copy config values only from the enum definition of your exact Presto version.
- Use uppercase enum names verbatim in properties files.
- Validate all ttl-* config properties in CI before deployment.
- Watch for config files shared across Presto versions or forks.
When it happens
Trigger: Server/plugin boot with a cluster-ttl-provider-manager-type value in the configuration that is not a member of the ClusterTtlProviderManagerType enum, causing the switch's default branch to execute.
Common situations: Typo in config property (e.g. 'confidnce' or 'throwing' when unsupported); config copied from a fork/newer Presto version with extra manager types; property set programmatically to an invalid value in tests.
Related errors
- Unknown Node Ttl Fetcher Manager:
- ARROW_INTERNAL_ERROR
- NODE_SELECTION_NOT_SUPPORTED
- RuntimeException(e)
- ACCUMULO_TABLE_EXISTS
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/6d92e3ddd5b34b24.
Report an issue: GitHub.