{"record":{"id":"b346743ed0c15234","repo":"apache/seatunnel","slug":"file-list-get-failed-b34674","errorCode":"FILE_LIST_GET_FAILED","errorMessage":"Get file list from this path [%s] failed, caused by: %s","messagePattern":"Get file list from this path \\[(.+?)\\] failed, caused by: (.+?)","errorType":"error_code","errorClass":"FileConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/source/config/HiveSourceConfig.java","lineNumber":231,"sourceCode":"        readonlyConfig\n                .getOptional(HiveSourceOptions.REMOTE_USER)\n                .ifPresent(hadoopConf::setRemoteUser);\n        return hadoopConf;\n    }\n\n    private List<String> parseFilePaths(Table table, ReadStrategy readStrategy) {\n        String hdfsPath = parseHdfsPath(table);\n        try {\n            return readStrategy.getFileNamesByPath(hdfsPath);\n        } catch (IOException e) {\n            if (isFileNotFound(e)) {\n                return Collections.emptyList();\n            }\n            String errorMsg =\n                    String.format(\n                            \"Get file list from this path [%s] failed, caused by: %s\",\n                            hdfsPath, getExceptionSummary(e));\n            throw new FileConnectorException(\n                    FileConnectorErrorCode.FILE_LIST_GET_FAILED, errorMsg, e);\n        }\n    }\n\n    private static String getExceptionSummary(Throwable throwable) {\n        String message = throwable.getMessage();\n        if (StringUtils.isBlank(message)) {\n            return throwable.getClass().getName();\n        }\n        return throwable.getClass().getName() + \": \" + message;\n    }\n\n    private static boolean isFileNotFound(Throwable throwable) {\n        Throwable current = throwable;\n        while (current != null) {\n            if (current instanceof FileNotFoundException\n                    || current instanceof NoSuchFileException\n                    || current instanceof PathNotFoundException) {","sourceCodeStart":213,"sourceCodeEnd":249,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/source/config/HiveSourceConfig.java#L213-L249","documentation":"parseFilePaths resolves the Hive table location(s) into a concrete HDFS file list. If the filesystem listing of the target path throws (path missing, NameNode unreachable, permission denied), the exception is wrapped in a FileConnectorException with FILE_LIST_GET_FAILED, including the path and an exception summary.","triggerScenarios":"HiveSourceConfig construction when the table's HDFS location cannot be listed: nonexistent directory, HDFS NameNode down/wrong fs.defaultFS, or the submitting user lacks read permission on the path.","commonSituations":"Table directory dropped/renamed after partition deletes; misconfigured HDFS URI or missing core-site/hdfs-site configs; Kerberos/HDFS permission denied for the job user; cloud storage path (s3a/oss) with wrong credentials.","solutions":["Verify the path exists: `hdfs dfs -ls <path>` with the same user that runs the SeaTunnel job","Check the HDFS config files (core-site.xml, hdfs-site.xml) are on the classpath and point to the right NameNode","Fix permissions: grant the job user read+execute on the directory (`hdfs dfs -chmod` or correct ACLs), or run as an authorized principal","Read the 'caused by' summary in the message to distinguish connection failure vs permission vs missing path","For cloud locations, verify endpoint/credentials for s3a/oss prefixes"],"exampleFix":"// before (table location removed)\nresult_path = \"hdfs://namenode:8020/warehouse/db.db/sales\"   // directory deleted\n// after (recreate/point at existing data)\nresult_path = \"hdfs://namenode:8020/warehouse/db.db/sales\"  // after `hdfs dfs -ls` confirms it exists\n// or fix URI:\n// before: hdfs://nn-old:8020/...  -> after: hdfs://nn-active:8020/...","handlingStrategy":"try-catch","validationCode":"// Pre-flight listing as the job user:\n// hdfs dfs -ls hdfs://namenode:8020/warehouse/db.db/table >/dev/null && echo OK","typeGuard":null,"tryCatchPattern":"try {\n    HiveSourceConfig cfg = new HiveSourceConfig(pluginConfig);\n} catch (FileConnectorException e) {\n    if (e.getCode().equals(FileConnectorErrorCode.FILE_LIST_GET_FAILED)) {\n        // inspect path + cause: fix URI, permissions, or NameNode connectivity\n    }\n    throw e;\n}","preventionTips":["hdfs dfs -ls the table location with the same user before running the job","Keep core-site.xml/hdfs-site.xml current and on the classpath","Grant read/execute on the warehouse directory to the job user/principal","Verify cloud-storage credentials when locations are s3a/oss paths"],"tags":["hive","hdfs","file-listing","source"],"backgroundTag":"file-not-found","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}