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

   ### Purpose of this pull request
   
   Fixes #12947.
   
   I am contributing these verified fixes to Apache SeaTunnel after auditing 
the WhaleTunnel 2.6-test fixed-slot and failover repair chain against the 
current SeaTunnel dev branch.
   
   A multi-slot request can partially succeed before another slot request 
fails. The current path completes the allocation failure before asynchronous 
rollback finishes, allowing a retry to race with slots still owned by the 
failed request. Related paths can also lose original request indexes, skip 
dynamic-worker fallback, publish RUNNING after failed deployment, or fail 
status lookup during master convergence.
   
   ### What changed
   
   - preserve original slot request indexes across fixed-worker retries and 
dynamic-worker fallback;
   - carry fixed-worker pre-check misses into dynamic allocation;
   - wait for every acquired slot rollback attempt before completing a failed 
request;
   - retry slot release independently, including synchronous release failures, 
and attach exhausted rollback failures to the original allocation failure;
   - retain successful allocations for cleanup when another slot future is 
null, exceptional, or cancelled;
   - publish task RUNNING only after successful deployment;
   - publish pipeline RUNNING only when every vertex is RUNNING or has already 
finished normally;
   - return UNKNOWABLE when neither live nor historical job state is available.
   
   ### Scope and duplicate audit
   
   This is the non-duplicate subset of the audited fixes. It intentionally 
excludes:
   
   - #12163, which handles the CDC snapshot acknowledgement chain;
   - #12388, which handles checkpoint resumption with already-finished idle 
readers;
   - #12510, which handles stale pipeline restore allocation after resource 
request failure;
   - #11592, which handles stale worker-profile refresh ordering after slot 
release.
   
   No public API, configuration default, protocol ID, serialized task state, or 
checkpoint/savepoint format changes.
   
   ### Regression coverage added
   
   Focused unit tests cover:
   
   - successful and failed task deployment state publication;
   - RUNNING, FINISHED, and FAILED vertex decisions through the real pipeline 
state-machine entry;
   - null, exceptional, and cancelled slot futures while retaining successful 
slots for cleanup;
   - rollback ordering, bounded retry, synchronous and asynchronous release 
failure, and exhausted rollback diagnostics;
   - selective per-slot retry so an already released slot is not released again;
   - non-contiguous original request indexes and ordered completion;
   - fixed-worker pre-check misses reaching dynamic-worker allocation;
   - unavailable live and historical status returning UNKNOWABLE.
   
   ### Validation
   
   - `mvn spotless:apply -nsu -Dmaven.gitcommitid.skip=true`: BUILD SUCCESS 
across 329 reactor modules.
   - `mvn spotless:apply spotless:check -pl 
seatunnel-engine/seatunnel-engine-server -nsu -Dmaven.gitcommitid.skip=true`: 
BUILD SUCCESS after final review fixes.
   - `git diff --cached --check`: passed before commit.
   - Independent QA and technical reviews found no blocking issue and concluded 
that implementation matches the plan.
   
   Per the local Apache SeaTunnel contribution protocol, local compilation, 
unit tests, and E2E were not executed. GitHub CI for this exact PR head is the 
runtime verification gate.
   
   ### Does this PR introduce any user-facing change?
   
   No. This is an internal Zeta engine correctness fix. Failed allocation now 
waits for bounded rollback completion before the request failure becomes 
visible, preventing the next retry from observing slots still owned by the 
failed attempt.
   
   ### Check list
   
   * [x] No new binary dependency or jar is added.
   * [x] No documentation change is required for this internal correctness fix.
   * [x] No incompatible change is introduced.
   * [x] No connector files are changed.


-- 
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