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.