goutamadwant opened a new pull request, #12079:
URL: https://github.com/apache/seatunnel/pull/12079

   ### Purpose of this pull request
   
   Closes #12077.
   
   This PR fixes transform dependency resolution in the Zeta runtime parser and 
connect dry-run validator.
   
   The previous retry queue could loop indefinitely on a dependency cycle. It 
also considered a multi-input transform ready when only some configured input 
IDs were available, silently removing unresolved upstream edges from the 
generated DAG. Reverse-declared valid chains repeatedly retried transforms and 
performed plugin discovery before readiness was known.
   
   The change:
   
   * detects transform cycles in linear time and reports a deterministic cycle 
path;
   * requires every distinct configured input ID before creating or validating 
a transform;
   * resolves dependencies with an indexed ready scheduler in `O((V + E) log 
V)` time and `O(V + E)` memory;
   * delays plugin discovery until dependency readiness is established;
   * preserves the legacy retry queue's evaluation order and generated action 
indexes for existing valid DAGs;
   * checks action-index arithmetic before narrowing to the legacy integer API; 
and
   * preserves the intentional single-transform and terminal 
explicit-empty-input fallbacks while rejecting ambiguous unresolved graphs.
   
   No public API, configuration option, dependency, or default behavior is 
added.
   
   ### Does this PR introduce _any_ user-facing change?
   
   Yes.
   
   Previously, a cyclic transform graph could leave submission or `--dry-run 
connect` running indefinitely. The same resolver could create an out-of-order 
multi-input transform from only the inputs already available, silently dropping 
the remaining configured upstreams.
   
   After this change, cycles and unresolved dependencies fail promptly with a 
contextual configuration error. Valid out-of-order DAGs wait for all inputs and 
retain every upstream action/schema. Correctly ordered jobs, duplicate input 
IDs, generated action names, result order, and the existing compatibility 
fallbacks remain unchanged.
   
   ### How was this patch tested?
   
   The final diff was tested on both supported JDK lines:
   
   * Java 8 (`1.8.0_172`): `ConfigParserUtilTest` 9/9, 
`MultipleTableJobConfigParserTest` 21/21, and 
`SeaTunnelConfValidateCommandTest` 29/29 passed.
   * Java 11 (`11.0.19`): the same suites passed 9/9, 21/21, and 29/29.
   * Java 8 and Java 11 skip-tests verification passed for 
`seatunnel-engine-core`, `seatunnel-engine-client`, and `seatunnel-starter`, 
including Spotless, compilation, and packaging.
   * `git diff --check` passed.
   
   Coverage includes two-node and self cycles, partially and wholly unresolved 
inputs, mixed source/transform inputs, duplicate input IDs, valid 
reverse-declared chains, runtime and connect dry-run paths, simple and 
explicit-empty fallback compatibility, terminal sink selection, and 
action-index boundaries.
   
   A wider aggregate reactor attempt was not counted as passing because it 
stopped before the affected modules in unchanged `seatunnel-config-shade` 
generated sources with missing `ConfigException`/`ConfigOrigin` symbols. The 
affected three-module verification above passes on both Java versions.
   
   ### Check list
   
   * [x] No new Jar binary package or dependency is added; the New License 
Guide does not apply.
   * [x] Documentation is not required because this fixes invalid dependency 
handling without adding or changing configuration.
   * [x] `incompatible-changes.md` is not required; existing valid DAG 
ordering, generated names, and compatibility fallbacks are preserved.
   * [x] The connector checklist is not applicable; this PR changes engine 
parsing and connect dry-run validation only.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to