{"record":{"id":"1ab87fb7f0aed214","repo":"apache/flink","slug":"the-given-file-system-uri-fsuri-did-not-descr","errorCode":null,"errorMessage":"The given file system URI (${fsUri}) did not describe the authority (like for example HDFS NameNode address/port or S3 host). The attempt to use a configured default authority failed: Hadoop configuration did not contain an entry for the default file system ('fs.defaultFS').","messagePattern":"The given file system URI \\((.+?)\\) did not describe the authority \\(like for example HDFS NameNode address/port or S3 host\\)\\. The attempt to use a configured default authority failed: Hadoop configuration did not contain an entry for the default file system \\('fs\\.defaultFS'\\)\\.","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"flink-filesystems/flink-hadoop-fs/src/main/java/org/apache/flink/runtime/fs/hdfs/HadoopFsFactory.java","lineNumber":142,"sourceCode":"                if (LOG.isDebugEnabled()) {\n                    LOG.debug(\n                            \"URI {} does not specify file system authority, trying to load default authority (fs.defaultFS)\",\n                            fsUri);\n                }\n\n                String configEntry = hadoopConfig.get(\"fs.defaultFS\", null);\n                if (configEntry == null) {\n                    // fs.default.name deprecated as of hadoop 2.2.0 - see\n                    // http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/DeprecatedProperties.html\n                    configEntry = hadoopConfig.get(\"fs.default.name\", null);\n                }\n\n                if (LOG.isDebugEnabled()) {\n                    LOG.debug(\"Hadoop's 'fs.defaultFS' is set to {}\", configEntry);\n                }\n\n                if (configEntry == null) {\n                    throw new IOException(\n                            getMissingAuthorityErrorPrefix(fsUri)\n                                    + \"Hadoop configuration did not contain an entry for the default file system ('fs.defaultFS').\");\n                } else {\n                    try {\n                        initUri = URI.create(configEntry);\n                    } catch (IllegalArgumentException e) {\n                        throw new IOException(\n                                getMissingAuthorityErrorPrefix(fsUri)\n                                        + \"The configuration contains an invalid file system default name \"\n                                        + \"('fs.default.name' or 'fs.defaultFS'): \"\n                                        + configEntry);\n                    }\n\n                    if (initUri.getAuthority() == null) {\n                        throw new IOException(\n                                getMissingAuthorityErrorPrefix(fsUri)\n                                        + \"Hadoop configuration for default file system ('fs.default.name' or 'fs.defaultFS') \"\n                                        + \"contains no valid authority component (like hdfs namenode, S3 host, etc)\");","sourceCodeStart":124,"sourceCodeEnd":160,"githubUrl":"https://github.com/apache/flink/blob/2f3c205e9266cb30240eb7f4fdab15cad629a70f/flink-filesystems/flink-hadoop-fs/src/main/java/org/apache/flink/runtime/fs/hdfs/HadoopFsFactory.java#L124-L160","documentation":"The filesystem URI (e.g. hdfs:///path) has no authority component, so HadoopFsFactory falls back to the configured default. Neither fs.defaultFS nor its deprecated alias fs.default.name is present in the effective Hadoop configuration, so there is no way to determine the NameNode/host, and an IOException is thrown with this prefix plus the specific cause.","triggerScenarios":"Creating a filesystem for a URI like 'hdfs:///user/x' (no host:port) while the Hadoop configuration has no fs.defaultFS entry; common when neither a valid core-site.xml nor a Flink config entry (fs.hdfs.hdfsdefault) is provided.","commonSituations":"Running Flink without HADOOP_CONF_DIR/core-site.xml; checkpoints or output paths written scheme-relative without host; using the shaded Hadoop jar which ships an empty default configuration.","solutions":["Use fully-qualified URIs including authority: hdfs://namenode:8020/path for checkpoint/output paths","Set fs.defaultFS in flink-conf.yaml (fs.hdfs.hdfsdefault) or provide a core-site.xml via HADOOP_CONF_DIR","Set fs.defaultFS explicitly as a Hadoop config option: hadoop.fs.defaultFS: hdfs://namenode:8020 in Flink configuration"],"exampleFix":"# before\nstate.checkpoints.dir: hdfs:///flink/checkpoints\n# after\nstate.checkpoints.dir: hdfs://namenode:8020/flink/checkpoints","handlingStrategy":"validation","validationCode":"URI u = URI.create(path);\nif (u.getAuthority() == null) {\n    String def = hadoopConf.get(\"fs.defaultFS\", hadoopConf.get(\"fs.default.name\"));\n    if (def == null) {\n        throw new IllegalStateException(\"Set fs.defaultFS or use a fully-qualified URI: \" + path);\n    }\n}","typeGuard":null,"tryCatchPattern":"try {\n    fs = FileSystem.get(uri);\n} catch (IOException e) {\n    if (e.getMessage().contains(\"did not describe the authority\")) {\n        // config issue: set fs.defaultFS or fully-qualify the URI; do not retry\n    }\n}","preventionTips":["Always use fully-qualified storage URIs in Flink configs","Ship a core-site.xml with fs.defaultFS via HADOOP_CONF_DIR","Add deployment checks that reject authority-less hdfs:// paths"],"tags":["hdfs","configuration","uri","fs-defaultfs"],"backgroundTag":null,"analyzedSha":"2f3c205e9266cb30240eb7f4fdab15cad629a70f","analyzedAt":"2026-08-14T08:48:24.518Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}