{"record":{"id":"ed313979fd013547","repo":"prestodb/presto","slug":"unknown-file-system-type","errorCode":null,"errorMessage":"Unknown file system type: ","messagePattern":"Unknown file system type: ","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"critical","filePath":"presto-hive/src/main/java/com/facebook/presto/hive/s3/HiveS3Module.java","lineNumber":71,"sourceCode":"        if (type == S3FileSystemType.PRESTO) {\n            bindSecurityMapping(binder);\n\n            binder.bind(S3ConfigurationUpdater.class).to(PrestoS3ConfigurationUpdater.class).in(Scopes.SINGLETON);\n            configBinder(binder).bindConfig(HiveS3Config.class);\n\n            binder.bind(PrestoS3FileSystemStats.class).toInstance(PrestoS3FileSystem.getFileSystemStats());\n            newExporter(binder).export(PrestoS3FileSystemStats.class).as(generatedNameOf(PrestoS3FileSystem.class, connectorId));\n        }\n        else if (type == S3FileSystemType.EMRFS) {\n            validateEmrFsClass();\n            binder.bind(S3ConfigurationUpdater.class).to(EmrFsS3ConfigurationUpdater.class).in(Scopes.SINGLETON);\n        }\n        else if (type == S3FileSystemType.HADOOP_DEFAULT) {\n            // configuration is done using Hadoop configuration files\n            binder.bind(S3ConfigurationUpdater.class).to(HadoopDefaultConfigurationUpdater.class).in(Scopes.SINGLETON);\n        }\n        else {\n            throw new RuntimeException(\"Unknown file system type: \" + type);\n        }\n    }\n\n    @Provides\n    @Singleton\n    @ForAWSS3DynamicConfigurationProvider\n    public AWSSecurityMappingsSupplier provideAWSSecurityMappingsSupplier(AWSSecurityMappingConfig config)\n    {\n        return new AWSSecurityMappingsSupplier(config.getConfigFile(), config.getRefreshPeriod());\n    }\n\n    private void bindSecurityMapping(Binder binder)\n    {\n        if (buildConfigObject(AWSSecurityMappingConfig.class).getConfigFile().isPresent() &&\n                buildConfigObject(AWSSecurityMappingConfig.class).getMappingType().equals(S3)) {\n            newSetBinder(binder, DynamicConfigurationProvider.class).addBinding()\n                    .to(AWSS3SecurityMappingConfigurationProvider.class).in(Scopes.SINGLETON);\n        }","sourceCodeStart":53,"sourceCodeEnd":89,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-hive/src/main/java/com/facebook/presto/hive/s3/HiveS3Module.java#L53-L89","documentation":"HiveS3Module.setup throws RuntimeException 'Unknown file system type: <type>' when hive.s3-file-system-type resolves to a value not handled by the binding switch (PRESTO, EMRFS, HADOOP_DEFAULT). This is a configuration/bootstrap error: the connector cannot wire its S3ConfigurationUpdater and startup aborts.","triggerScenarios":"Setting hive.s3-file-system-type in the Hive connector properties to an invalid string (typo like 'presto-s3', wrong case) or an enum value not covered by the module's if/else chain — the config object deserializes to something the setup method doesn't recognize.","commonSituations":"Misconfigured hive.properties during catalog setup; copy-pasting config from a different Presto version where the accepted values differ; fat-fingering the enum value; switching between PRESTO/EMRFS/HADOOP_DEFAULT deployments with stale properties files.","solutions":["Set hive.s3-file-system-type to one of: PRESTO, EMRFS, or HADOOP_DEFAULT in the catalog's hive.properties.","Fix typos/case and restart the coordinator and workers so the catalog reloads.","If you need EMRFS, ensure the value is EMRFS (and the EMR FS jar is present, see the companion class-not-found error).","Remove S3-specific properties not applicable to the chosen type (e.g., Presto S3 keys when using HADOOP_DEFAULT)."],"exampleFix":"// before: etc/catalog/hive.properties\nhive.s3-file-system-type=prestos3\n// after\nhive.s3-file-system-type=PRESTO","handlingStrategy":"validation","validationCode":"// validate the property against allowed enum values at deploy time\nString v = properties.getProperty(\"hive.s3-file-system-type\", \"PRESTO\");\nSet<String> allowed = Set.of(\"PRESTO\", \"EMRFS\", \"HADOOP_DEFAULT\");\nif (!allowed.contains(v.toUpperCase())) {\n    throw new IllegalArgumentException(\"hive.s3-file-system-type must be one of \" + allowed + \", got: \" + v);\n}","typeGuard":null,"tryCatchPattern":"try {\n    return pluginManager.loadCatalog(\"hive\", props);\n} catch (RuntimeException e) {\n    if (e.getMessage() != null && e.getMessage().startsWith(\"Unknown file system type:\")) {\n        throw new ConfigException(\"Fix hive.s3-file-system-type (PRESTO|EMRFS|HADOOP_DEFAULT): \" + e.getMessage());\n    }\n    throw e;\n}","preventionTips":["Validate catalog properties files in CI before deploying to all nodes.","Copy config only from the same Presto version's documentation (accepted values are version-specific).","Use exact uppercase enum values in hive.properties.","Restart all nodes together after changing s3-file-system-type to avoid mixed catalogs."],"tags":["s3","configuration","startup","hive-connector"],"backgroundTag":"invalid-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"}