apache/seatunnel · error

Cannot qualify path for safety check, using raw path…

Error message

Cannot qualify path for safety check, using raw path validation: {}

What it means

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.

Solutions

  1. Fix the configured path (valid scheme/authority) so qualification succeeds
  2. Use an absolute, non-root directory for post_sync_action targets
  3. Verify filesystem configuration matches the path scheme
Defensive patterns

Strategy: fallback

When it happens

Trigger: 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.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/f9e38f9b93d6fd5a. Report an issue: GitHub.

Appendix: source

Thrown at seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/split/ContinuousMultipleTableFileSourceSplitEnumerator.java:1592

            String pathComponent = new Path(qualified).toUri().getPath();
            if ("/".equals(pathComponent) || pathComponent.isEmpty()) {
                throw new FileConnectorException(
                        SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED,
                        "post_sync_action=delete|backup requires path to be a non-root directory. "
                                + "Refusing to operate on filesystem root to prevent mass deletion.");
            }
        } catch (FileConnectorException e) {
            throw e;
        } catch (Exception e) {
            // Best-effort: if filesystem not initialized, check raw path
            String pathPart = new Path(path).toUri().getPath();
            if (pathPart == null || "/".equals(pathPart) || pathPart.isEmpty()) {
                throw new FileConnectorException(
                        SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED,
                        "post_sync_action=delete|backup requires path to be a non-root directory. "
                                + "Refusing to operate on filesystem root to prevent mass deletion.");
            }
            log.warn(
                    "Cannot qualify path for safety check, using raw path validation: {}", path, e);
        }
    }

    private static String resolveFsIdentity(String path, String defaultFsIdentity) {
        if (StringUtils.isBlank(path)) {
            return defaultFsIdentity;
        }
        try {
            java.net.URI uri = new Path(path).toUri();
            if (StringUtils.isBlank(uri.getScheme())) {
                return defaultFsIdentity;
            }
            return normalizeFsIdentity(uri);
        } catch (Exception e) {
            return defaultFsIdentity;
        }
    }

View on GitHub (pinned to cf67b549a7)