apache/seatunnel · warning

part size is less than , set to default value

Error message

part size {} is less than {}, set to default value {}

What it means

PartStrategySplitter.partCountLimitForOneSplit validates the configured ClickHouse split size. If the user-configured splitSize is below CLICKHOUSE_SPLIT_SIZE_MIN, it logs this warning and silently resets partSize to CLICKHOUSE_SPLIT_SIZE_MIN (the message's 'default value' refers to the default constant used). Execution continues with the corrected value.

Solutions

  1. Set split.size to a value >= CLICKHOUSE_SPLIT_SIZE_MIN to silence the warning and get intended behavior.
  2. Remove the split.size option to use the default value.
  3. Check ClickhouseSourceOptions for the exact MIN/DEFAULT constants and adjust your config accordingly.

Example fix

# before
split.size = 1
# after
split.size = 20000
Defensive patterns

Strategy: validation

Validate before calling

// validate before submit
int min = 20000; // ClickhouseSourceOptions.CLICKHOUSE_SPLIT_SIZE_MIN
if (configuredSplitSize != null && configuredSplitSize < min) {
    throw new IllegalArgumentException("split.size must be >= " + min);
}

Prevention

When it happens

Trigger: clickhouseSourceTable.getSplitSize() returns a value smaller than ClickhouseSourceOptions.CLICKHOUSE_SPLIT_SIZE_MIN (configured 'split.size' or per-table split size too small).

Common situations: Users setting split.size=1 or similar very small values expecting fine-grained parallelism; typo'ed config value; copied config from another connector with different units.

Understand the failure class

Background: "value must be between 0 and 1" / "out of range" / "must not be negative" errors: fixing range-validation failures across open-source libraries — this error's family across 42 libraries.

Related errors


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

Appendix: source

Thrown at seatunnel-connectors-v2/connector-clickhouse/src/main/java/org/apache/seatunnel/connectors/seatunnel/clickhouse/source/split/PartStrategySplitter.java:145

            List<String> partNameList =
                    split.getParts().stream()
                            .map(ClickhousePart::getName)
                            .collect(Collectors.toList());
            log.debug("generate shard {} to parts {}", split.getShard().getNode(), partNameList);
        }

        log.info("generate splits size: {}", splits.size());
        return splits;
    }

    public int partCountLimitForOneSplit(ClickhouseSourceTable clickhouseSourceTable) {
        int partSize = ClickhouseSourceOptions.CLICKHOUSE_SPLIT_SIZE_DEFAULT;
        if (clickhouseSourceTable.getSplitSize() != null) {
            partSize = clickhouseSourceTable.getSplitSize();
        }

        if (partSize < ClickhouseSourceOptions.CLICKHOUSE_SPLIT_SIZE_MIN) {
            log.warn(
                    "part size {} is less than {}, set to default value {}",
                    partSize,
                    ClickhouseSourceOptions.CLICKHOUSE_SPLIT_SIZE_MIN,
                    ClickhouseSourceOptions.CLICKHOUSE_SPLIT_SIZE_DEFAULT);
            partSize = ClickhouseSourceOptions.CLICKHOUSE_SPLIT_SIZE_MIN;
        }
        log.debug("part size is set to {}", partSize);

        return partSize;
    }

    @Override
    public void close() {}
}

View on GitHub (pinned to cf67b549a7)