Apache Software Foundation / SeaTunnel
Merged upstreamMaintenanceMerged Sep 13, 2026

Move FilterRowKind validation into OptionRule

Migrated FilterRowKind's include/exclude configuration contract to SeaTunnel's declarative `OptionRule` path while preserving valid row-filtering behavior.

apache/seatunnel · #11763

Configuration reliability improvement

Invalid FilterRowKind settings now fail during declarative option validation instead of later during transform initialization or row processing.

Problem

The transform checked mutually exclusive `include_kinds` and `exclude_kinds` through duplicated runtime branches. Missing, conflicting, or empty options could therefore fail after pipeline construction rather than at the standard configuration-validation boundary.

Approach

Uses `OptionRule.exclusive` with non-empty constraints to require exactly one populated option and removes redundant runtime configuration checks. The rule follows the established sibling FilterField transform pattern.

Impact and scope

  • Rejects invalid jobs earlier with structured option-validation errors across normal Zeta, Flink, and Spark construction paths.
  • Centralizes the accepted configuration contract in the factory instead of splitting it between construction and per-row execution.
  • Leaves option names, valid configurations, filtering results, public APIs, and checkpoint behavior unchanged.

Validation

  • Focused factory coverage exercises valid include and exclude lists, neither or both configured, and explicitly empty lists.
  • Adjacent transform-chain, timestamp-preservation, live-alter, and production schema-change tests were run against direct transform construction paths.
  • A SeaTunnel collaborator approved the final change, and the GitHub-verified merge commit credits Goutam Adwant. No claim is made that the historical fork CI was fully green; issue GH-11007 remains the broader migration tracker.