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

   > Supersedes #11613. The commits, authorship and review history of that PR 
are carried over unchanged (head `117cf5289a`). It is reopened from a fork 
where GitHub Actions can run: the fork behind #11613 has been disabled by 
GitHub's usage-based fork workflow limit since 2026-09-15, so no `Build` run 
could be created for any head after `a947704bf`, and the owner could not be 
reached to re-enable it. Review threads on #11613 (SEZ9, DanielLeens) remain 
the reference; all points are addressed there except refreshed screenshots, 
which will follow in a separate docs PR.
   
   ### Purpose
   
   Closes #11579.
   
   This PR adds common Zeta Web UI operation controls while keeping the UI as a 
thin client over Zeta REST APIs.
   
   ### Changes
   
   - Add job submission from configuration text or an uploaded configuration 
file, with checkpoint or savepoint restore via the explicit `restoreMode` / 
`restoreSourceJobId` contract.
   - Add running-job controls for graceful stop, savepoint stop, and force 
cancel, each with confirmation and visible status feedback.
   - Add checkpoint overview/history and restore-latest-state entry points from 
Job Detail. Restore controls stay disabled until the source job reaches an end 
state; the engine checks again on submission.
   - Add an Operations page for connector OptionRule metadata and a read-only 
HTTP service status view that omits sensitive values.
   - Add local-worker tag management with an explicit target UUID, 
matching-server validation, and string-only values for the new structured 
endpoint, integrated with the worker resource table that landed on `dev` in 
#12398.
   - Reject a `restoreMode` submission while the source job has not reached an 
end state, and fail non-numeric `restoreSourceJobId` values with a clear `400`. 
The submit panel now shows the engine's failure message so operators see why a 
restore was refused.
   - Document the behavior in English and Chinese, and add regression coverage 
for tag compatibility, status-response secrecy, member identity in 
`/system-monitoring-information`, the restore guard, and REST E2E for the two 
new endpoints.
   
   ### Compatibility and safety
   
   - Existing REST endpoints and request fields are preserved.
   - `/update-tags` retains its original legacy flat-map request contract 
exactly; no key is reserved, and non-string values still convert to strings for 
compatibility. Only the new `/update-local-member-tags` endpoint rejects 
non-string tag values with HTTP 400.
   - The Web UI uses the additive `/update-local-member-tags` endpoint with `{ 
uuid, tags }`. The UUID must match the node serving that REST request; remote 
worker rows stay read-only. Both new endpoints sit on the same servlet context 
as every other endpoint, so basic auth and mTLS apply unchanged.
   - The HTTP status endpoint returns only operational booleans, ports, and 
context data. Passwords, usernames, and keystore/truststore paths are never 
returned. `mutualTlsEnabled` reflects the effective Jetty SSL context.
   - The legacy `isStartWithSavePoint` + `jobId` path is untouched; the 
restore-source guard applies only to the explicit `restoreMode` contract.
   - `/system-monitoring-information` entries gain additive `uuid`, 
`localMember` and `tags` fields, including for members that timed out, on top 
of the bounded fan-out introduced in #12161.
   
   ### Review follow-ups addressed in the current head
   
   - F1 `/update-tags` flat example uses plain tag keys and states that no key 
is reserved.
   - F2 `RestApiIT` now exercises `/http-service/status` and 
`/update-local-member-tags` over real HTTP on both the Jetty and Hazelcast REST 
ports, including the UUID mismatch rejection.
   - F3 Docs state that both new endpoints share the existing basic-auth / mTLS 
chain.
   - F4 Docs call out the load-balancer limitation of the local-only UUID check 
(REST API and Web UI pages).
   - F5 Dedicated `/update-local-member-tags` section with request, response 
and error examples, including non-string tag values; unit and REST regression 
cases now cover that rejection without changing legacy `/update-tags` coercion.
   - F6 Server-side guard: restore is refused while the source job is still 
active; `No checkpoint found` is returned when the state was cleaned up. The 
Web UI guide now states both operator-visible outcomes. Covered by 
`JobInfoServiceRestoreGuardTest` and REST submit tests.
   - F7 Per-field descriptions and consistent default example ports (`8080` / 
`8443`) for `/http-service/status`.
   - F8a Checkpoints restore controls now track the source job's terminal 
status, with a UI regression test and matching en/zh docs.
   - F8 Removed the outdated Running Jobs and Job Detail screenshots. 
Replacement screenshots for the new controls are not included because a current 
UI runtime was not available for capture.
   
   ### Verification
   
   - Merged `apache/dev` at `99ea16b9d` and resolved the two en/zh 
incompatible-changes documentation conflicts, preserving both the upstream WAL 
migration note and this PR's restore guard note.
   - `./mvnw -pl 
seatunnel-engine/seatunnel-engine-server,seatunnel-e2e/seatunnel-engine-e2e/connector-seatunnel-e2e-base
 spotless:apply -nsu -Dmaven.gitcommitid.skip=true`
   - `[email protected] --check` passed for the five UI TypeScript/TSX files at 
prior head `4aba1e689`; the latest commit changes no UI TypeScript/TSX.
   - `git diff --check apache/dev` and conflict/scope checks.
   
   Per the SeaTunnel local-validation rule for this workspace, local 
compilation and unit/integration/E2E tests were not run. Scoped Spotless and 
`git diff --check` passed for the latest commit `379efa74e`. GitHub CI has not 
validated this head: fork Actions remain disabled by GitHub's usage-scale gate, 
and a manual Build dispatch for the current head returned HTTP 422 (`Actions 
has been disabled for this repository`). The fork maintainer must re-enable 
Actions in the fork's Actions page before a current-head Build run can exist.
   
   ### Open follow-up
   
   - Screenshots for the new Action controls, Submit Job panel, Checkpoints 
tab, Operations page and tag editor are not included; the outdated Running Jobs 
and Job Detail images were removed. They need a local UI run against fixtures 
and will come in a separate docs PR.
   
   🤖 Generated with [Claude Code](https://claude.com/claude-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