{"record":{"id":"f9e38f9b93d6fd5a","repo":"apache/seatunnel","slug":"cannot-qualify-path-for-safety-check-using-raw-pa","errorCode":null,"errorMessage":"Cannot qualify path for safety check, using raw path validation: {}","messagePattern":"Cannot qualify path for safety check, using raw path validation: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/split/ContinuousMultipleTableFileSourceSplitEnumerator.java","lineNumber":1592,"sourceCode":"            String pathComponent = new Path(qualified).toUri().getPath();\n            if (\"/\".equals(pathComponent) || pathComponent.isEmpty()) {\n                throw new FileConnectorException(\n                        SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED,\n                        \"post_sync_action=delete|backup requires path to be a non-root directory. \"\n                                + \"Refusing to operate on filesystem root to prevent mass deletion.\");\n            }\n        } catch (FileConnectorException e) {\n            throw e;\n        } catch (Exception e) {\n            // Best-effort: if filesystem not initialized, check raw path\n            String pathPart = new Path(path).toUri().getPath();\n            if (pathPart == null || \"/\".equals(pathPart) || pathPart.isEmpty()) {\n                throw new FileConnectorException(\n                        SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED,\n                        \"post_sync_action=delete|backup requires path to be a non-root directory. \"\n                                + \"Refusing to operate on filesystem root to prevent mass deletion.\");\n            }\n            log.warn(\n                    \"Cannot qualify path for safety check, using raw path validation: {}\", path, e);\n        }\n    }\n\n    private static String resolveFsIdentity(String path, String defaultFsIdentity) {\n        if (StringUtils.isBlank(path)) {\n            return defaultFsIdentity;\n        }\n        try {\n            java.net.URI uri = new Path(path).toUri();\n            if (StringUtils.isBlank(uri.getScheme())) {\n                return defaultFsIdentity;\n            }\n            return normalizeFsIdentity(uri);\n        } catch (Exception e) {\n            return defaultFsIdentity;\n        }\n    }","sourceCodeStart":1574,"sourceCodeEnd":1610,"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/split/ContinuousMultipleTableFileSourceSplitEnumerator.java#L1574-L1610","documentation":"Logged when the configured post-sync path cannot be fully qualified (filesystem makeQualified failure) before the root-path safety check; validation falls back to raw-path checks to still reject filesystem-root targets and avoid mass deletion.","triggerScenarios":"Thrown at seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/split/ContinuousMultipleTableFileSourceSplitEnumerator.java:1592 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix the configured path (valid scheme/authority) so qualification succeeds","Use an absolute, non-root directory for post_sync_action targets","Verify filesystem configuration matches the path scheme"],"exampleFix":null,"handlingStrategy":"fallback","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"}