DanielLeens opened a new pull request, #11559: URL: https://github.com/apache/seatunnel/pull/11559
### Purpose of this pull request Refs #7937. This Draft introduces a **Phase-0 / M0 terminal planning and deployment-descriptor spike** for Dynamic Lookup. It is intentionally non-deployable and non-runnable. It does not claim that PR-1, M1, Experimental, GA, or a Final Architecture Decision is complete. Design discussion: https://github.com/apache/seatunnel/issues/7937#issuecomment-5083135821 Reviewed architecture document SHA-256: `81465412d02651e88e3ea5f763d8eb285369b82e422c7ade82f87ab6b3403ff4` Implementation base: `924b289e95d0bfe06286e8666bcbb7d986bc2023` Included in this spike: - a dedicated `DynamicLookupAction` and operator-scoped coordinator action; - explicit fact and dimension input-port bindings with stable edge identities; - a new versioned port-aware logical-edge class ID while preserving the legacy `LogicalEdge` class ID and two-long payload; - propagation of port metadata through logical, execution, and physical planning; - stable logical-channel and attempt-identity shapes; - coordinator checkpoint topology and canonical-name restore lookup through a real `CompletedCheckpoint -> ProtoStuff -> CompletedCheckpoint` fixture; - topology ownership checks and compatibility fixtures; - fail-closed guards in both `PhysicalPlan.initStateFuture()` and `PhysicalPlan.startJob()`, before any source or lookup task can start. ### Draft-only boundaries and merge blockers The following PR-1 gates are deliberately **not complete**: 1. There is no parser or user-facing syntax, output materialization, exchange transport, barrier alignment, managed state, restore gate, bootstrap protocol, or lookup row semantics. `DynamicLookupMultiInputTask.call()` fails intentionally, and the physical plan cannot start. 2. `ChannelAttemptId` defines only the identity shape. Real scheduler deployment attempts, job execution epochs, connection epochs, transport envelopes, and receiver fencing are not wired. 3. The new class ID and legacy fixture do not provide a mixed-version JobMaster/Worker capability handshake. 4. Gate A is not satisfied: unequal parallelism and real multi-channel routing are unsupported, and the complete legacy Union/multi-sink plus deployment/checkpoint runtime matrix has not been executed. Checkpoint persistence in this spike guarantees canonical `ActionStateKey.name` equality and map lookup. It does not claim that ProtoStuff preserves the `CoordinatorStateKey` Java subtype or its separate field representation. These items must remain open before this PR can be marked Ready for Review or merge-ready. ### Does this PR introduce _any_ user-facing change? No. Dynamic Lookup is not exposed by a parser or configuration, and any internally constructed prototype plan is rejected before task start. ### How was this patch tested? Added focused tests for: - legacy and port-aware edge wire compatibility and canonical golden vectors; - stable port/edge propagation across planning layers; - ownership and unsupported-topology fail-fast validation; - physical input-channel descriptors and attempt identity differentiation; - coordinator checkpoint topology and ProtoStuff canonical-name restore lookup; - pre-start rejection of the non-runnable prototype; - unchanged legacy multi-source pipeline behavior. Local validation completed: - scoped `spotless:apply` for `seatunnel-engine-core` and `seatunnel-engine-server`; - scoped `spotless:check` for both modules; - `git diff --check`. Local compilation, unit tests, E2E tests, Docker, and services were intentionally not run in this Draft pass. Current-head GitHub CI remains the execution evidence gate. Two independent QA and Maintainer reviews found no P0 blocker for Draft publication, while retaining the four PR-1 completion blockers listed above. ### Check list * [x] No new Jar binary package is added. * [x] No user-facing documentation is added because this spike is deliberately unreachable and non-runnable. * [x] The legacy wire contract is preserved; no incompatible change is claimed. * [x] This is not connector code. -- 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]
