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]

Reply via email to