apache/seatunnel · error · HttpConnectorException

CONFIG_VALIDATION_FAILED

CONFIG_VALIDATION_FAILED

Error message

The Shopify source does not support the 'pageing' option: it would be accepted and then ignored, so only the first page of results would be read while the job reported success. Remove 'pageing' from the source configuration.

What it means

The Shopify source rejects the 'pageing' option at startup because it inherits the option from connector-http-base but never supplies a PageInfo to its reader. Accepting it would silently read only the first page while the job reported success. The Admin REST API returns cursors in the Link header, which the shared JsonPath-based reader cannot follow.

Solutions

  1. Remove the 'pageing' option from the Shopify source configuration
  2. Wait for/track header-cursor (Link header) pagination support in connector-http-base
  3. If multiple pages are needed, filter requests (e.g. created_at_min/max, updated_at_min/max) so each result set fits in one page

Example fix

// before
source {
  Shopify {
    url = "https://mystore.myshopify.com/admin/api/2023-01/orders.json"
    pageing {
      page_size = 100
    }
  }
}
// after
source {
  Shopify {
    url = "https://mystore.myshopify.com/admin/api/2023-01/orders.json"
  }
}
Defensive patterns

Strategy: validation

Validate before calling

if (config.containsKey("pageing")) {
  throw new IllegalArgumentException("Shopify source: remove 'pageing' — header-cursor pagination is unsupported");
}

Try / catch

try { new ShopifySource(pluginConfig); } catch (HttpConnectorException e) {
  if (e.getHttpConnectorErrorCode() == HttpConnectorErrorCode.CONFIG_VALIDATION_FAILED) { /* fix config, resubmit */ }
}

Prevention

When it happens

Trigger: A Shopify source config containing the 'pageing' option (inherited from HttpSourceOptions) causes ShopifySource's constructor to call rejectUnsupportedPagination and throw HttpConnectorException(CONFIG_VALIDATION_FAILED).

Common situations: Developers copy a generic HTTP source config and add 'pageing' assuming pagination works like the base connector; stores with >1 page of orders/products would otherwise silently lose data.

Understand the failure class

Background: Config validation failed: what "invalid value for {key}" and settings-rejection errors mean across 19 open-source libraries — this error's family across 19 libraries.

Related errors


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

Appendix: source

Thrown at seatunnel-connectors-v2/connector-http/connector-http-shopify/src/main/java/org/apache/seatunnel/connectors/seatunnel/shopify/source/ShopifySource.java:63

    public ShopifySource(ReadonlyConfig pluginConfig) {
        super(pluginConfig);
        rejectUnsupportedPagination(pluginConfig);
        this.shopifySourceParameter.buildWithConfig(pluginConfig);
    }

    /**
     * {@code pageing} is inherited from the HTTP source option rule, but this connector never hands
     * a {@code PageInfo} to its reader, so accepting the option would read the first response and
     * report success — a store with more than one page of results would lose the rest silently.
     * Failing at startup keeps that from looking like a healthy job.
     *
     * <p>The Admin REST API returns its cursor in the {@code Link} response header, while the
     * shared reader resolves cursors with a JsonPath against the response body, so supporting this
     * properly needs a header-cursor mode in {@code connector-http-base} rather than a change here.
     */
    private static void rejectUnsupportedPagination(ReadonlyConfig pluginConfig) {
        if (pluginConfig.getOptional(HttpSourceOptions.PAGEING).isPresent()) {
            throw new HttpConnectorException(
                    HttpConnectorErrorCode.CONFIG_VALIDATION_FAILED,
                    "The Shopify source does not support the 'pageing' option: it would be "
                            + "accepted and then ignored, so only the first page of results would "
                            + "be read while the job reported success. Remove 'pageing' from the "
                            + "source configuration.");
        }
    }

    @Override
    public String getPluginName() {
        return "Shopify";
    }

    @Override
    public AbstractSingleSplitReader<SeaTunnelRow> createReader(
            SingleSplitReaderContext readerContext) throws Exception {
        return new HttpSourceReader(
                this.shopifySourceParameter,

View on GitHub (pinned to cf67b549a7)