{"record":{"id":"b0ba0fb49c0f48c3","repo":"apache/seatunnel","slug":"failed-during-source-listing-root-stat-for-protoco","errorCode":null,"errorMessage":"Failed during source_listing root_stat for protocol=%s, path=%s","messagePattern":"Failed during source_listing root_stat for protocol=(.+?), path=(.+?)","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/FileDiscoveryScanner.java","lineNumber":52,"sourceCode":"    private static final long PROGRESS_INTERVAL = 10_000L;\n\n    private FileDiscoveryScanner() {}\n\n    /** Traverses directories explicitly and applies the filter in the listing callback. */\n    static ScanStats scan(\n            Path root,\n            boolean recursive,\n            FileStatusListingSession session,\n            FileFilter filter,\n            FileStatusListingSession.FileStatusConsumer candidateConsumer)\n            throws IOException {\n        long started = System.nanoTime();\n        ScanStats stats = new ScanStats();\n        FileStatus rootStatus;\n        try {\n            rootStatus = session.getFileStatus(root);\n        } catch (IOException e) {\n            throw new IOException(\n                    \"Failed during source_listing root_stat for protocol=\"\n                            + scheme(root)\n                            + \", path=\"\n                            + mask(root),\n                    e);\n        }\n        if (rootStatus.isFile()) {\n            stats.sourceEntries++;\n            process(rootStatus, filter, candidateConsumer, stats);\n        } else {\n            Deque<Path> directories = new ArrayDeque<>();\n            directories.push(rootStatus.getPath());\n            while (!directories.isEmpty()) {\n                Path directory = directories.pop();\n                try {\n                    session.list(\n                            directory,\n                            status -> {","sourceCodeStart":34,"sourceCodeEnd":70,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/FileDiscoveryScanner.java#L34-L70","documentation":"Logged by FileDiscoveryScanner.scan when obtaining the root path's FileStatus via the filesystem client fails during source listing setup. It names the scheme/protocol and path whose initial stat failed, typically an unreachable or misconfigured filesystem.","triggerScenarios":"Thrown at seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/FileDiscoveryScanner.java:52 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the path exists and is accessible under the given scheme (hdfs://, s3a://, file://, etc.)","Check filesystem credentials/configuration (Hadoop conf, S3 keys) for the configured protocol","Ensure the filesystem client jar for the protocol is on the classpath"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}