{"record":{"id":"f5a81039ce01171c","repo":"prestodb/presto","slug":"unknown-node-ttl-fetcher-manager","errorCode":null,"errorMessage":"Unknown Node Ttl Fetcher Manager: ","messagePattern":"Unknown Node Ttl Fetcher Manager: ","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"critical","filePath":"presto-main-base/src/main/java/com/facebook/presto/ttl/nodettlfetchermanagers/NodeTtlFetcherManagerModule.java","lineNumber":39,"sourceCode":"import static org.weakref.jmx.guice.ExportBinder.newExporter;\n\npublic class NodeTtlFetcherManagerModule\n        extends AbstractConfigurationAwareModule\n{\n    @Override\n    protected void setup(Binder binder)\n    {\n        NodeTtlFetcherManagerConfig config = buildConfigObject(NodeTtlFetcherManagerConfig.class);\n        configBinder(binder).bindConfig(NodeTtlFetcherManagerConfig.class);\n        switch (config.getNodeTtlFetcherManagerType()) {\n            case THROWING:\n                binder.bind(NodeTtlFetcherManager.class).to(ThrowingNodeTtlFetcherManager.class).in(Scopes.SINGLETON);\n                break;\n            case CONFIDENCE:\n                binder.bind(NodeTtlFetcherManager.class).to(ConfidenceBasedNodeTtlFetcherManager.class).in(Scopes.SINGLETON);\n                break;\n            default:\n                throw new UnsupportedOperationException(\"Unknown Node Ttl Fetcher Manager: \" + config.getNodeTtlFetcherManagerType());\n        }\n        newExporter(binder).export(NodeTtlFetcherManager.class).withGeneratedName();\n    }\n}\n","sourceCodeStart":21,"sourceCodeEnd":44,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-main-base/src/main/java/com/facebook/presto/ttl/nodettlfetchermanagers/NodeTtlFetcherManagerModule.java#L21-L44","documentation":"NodeTtlFetcherManagerModule.setup throws UnsupportedOperationException when config.getNodeTtlFetcherManagerType() does not match any supported enum case (e.g. CONFIDENCE), i.e. the node-ttl-fetcher-manager-type configuration property holds an unrecognized value. This fails Guice dependency injection at server startup.","triggerScenarios":"Boot with node-ttl-fetcher-manager-type set to a value outside the NodeTtlFetcherManagerType enum, hitting the switch default branch.","commonSituations":"Typo in the config value; config file copied from a different Presto version or fork supporting other manager types; case mismatch (enum values are uppercase); leftover property from an experimental build.","solutions":["Set node-ttl-fetcher-manager-type to a valid enum value such as CONFIDENCE.","Inspect the NodeTtlFetcherManagerType enum of the deployed Presto version for exact accepted values.","Remove the invalid property line to fall back to defaults if TTL fetcher management is unused.","Fix casing/spelling to match the enum constant exactly."],"exampleFix":"// before (etc/config.properties)\nnode-ttl-fetcher-manager-type=confidence\n\n// after\nnode-ttl-fetcher-manager-type=CONFIDENCE","handlingStrategy":"validation","validationCode":"// Validate node TTL fetcher manager config before boot\nNodeTtlFetcherManagerType type = config.getNodeTtlFetcherManagerType();\nif (type == null || !EnumSet.allOf(NodeTtlFetcherManagerType.class).contains(type)) {\n    throw new IllegalArgumentException(\"Unsupported node-ttl-fetcher-manager-type: \" + type);\n}","typeGuard":"boolean isValidFetcherManagerType(String value) {\n    try {\n        NodeTtlFetcherManagerType.valueOf(value.trim().toUpperCase());\n        return true;\n    } catch (IllegalArgumentException e) {\n        return false;\n    }\n}","tryCatchPattern":"try {\n    injector = Guice.createInjector(new NodeTtlFetcherManagerModule(config));\n} catch (UnsupportedOperationException e) {\n    LOG.error(e.getMessage() + \" — set node-ttl-fetcher-manager-type to a valid enum value\");\n    throw e;\n}","preventionTips":["Use exact enum constant names (e.g. CONFIDENCE) in configuration files.","Version-check config templates against the deployed Presto release.","Add config linting to catch unknown enum-valued properties at deploy time.","Remove unused ttl config properties instead of guessing values."],"tags":["configuration","guice","ttl","presto","startup"],"backgroundTag":"unknown-config-value","analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}