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]
